1

00が2倍の場合は小数点を削除して価格を表示するか、その他の値の上付き文字として表示します。これは、番号に為替または税金が追加されるまで機能します。上付き文字は引き続き機能しますが、整数は上付き文字としてダブル00で返されます。

$24.00USDは$24USDである必要があります

$24.99USDは$24である必要があります。99米ドル

これは私が使用しているコードです:

if(round($value, 0) == $value)  
$string .= number_format(($value)) . ' ';   

else

$string .= preg_replace("/\.(\d*)/", "<sup>.$1</sup>", number_format($value,    
(int)$decimal_place, $decimal_point, $thousand_point)) . ' ';

通貨または税金の計算後にダブル00を削除するには、何が欠けていますか?

4

2 に答える 2

2

これを置き換える必要があります:

if(round($value, 0) == $value)

これで:

if(abs(round($value, 0) - $value) < 0.005)

税金と通貨の計算により、浮動小数点の不正確さが生じるためです。

于 2012-05-14T21:29:43.697 に答える
0

どうぞ:

setlocale(LC_MONETARY, 'en_US');
$money = money_format('%n', $value);

$exploded = explode('.', $money);

$currency = '$';

if($exploded[1] == '00')
{
    $currency .= substr($money, 0, strlen($money) -3);
}else
{
    $currency .= $exploded[0] . '<sup>' . $exploded[1] . '</sup>';
}

$currency .= ' USD';

echo $currency;
于 2012-05-14T21:44:26.730 に答える