删除小数在税务或货币计算后停止工作

时间:2012-05-14 19:42:00

标签: php string-formatting decimal

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

24.00美元应为24美元

<$> 24.99美元应为24美元。 99 USD

这是我正在使用的代码:

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?

2 个答案:

答案 0 :(得分:2)

你应该替换它:

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

由此:

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

因为税收和货币计算引入了一些浮点不精确。

答案 1 :(得分: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;