1

如果它们是双 00,我想通过删除小数来显示价格,或者显示为任何其他值的上标。这一直有效,直到有货币兑换或税收添加到数字。上标仍然有效,但返回的整数是双 00 作为上标。

24.00 美元应为 24 美元

24.99 美元应该是 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 回答