在php中奇怪的数学计算

时间:2013-09-05 14:46:26

标签: php math

我试图在php中进行此计算,但却给了我错误的结果。我认为这是对的。

如果我做5000.00 - 100.10它可以工作,但我也希望5,000.00工作。

这是我的代码:

要创建5,000.00,我使用了number_format(5000,2)。 以及100.10     

    $total = $value1 - $value2;

    echo $total;  
?>

$ total = -95.00

我试图在php中进行此计算,但却给了我错误的结果。我认为这是对的。

如果我做5000.00 - 100.10它可以工作,但我也希望5,000.00工作。

请帮助......

2 个答案:

答案 0 :(得分:3)

如果要对数字进行算术运算,则不能使用千位分隔符(,)。发生了什么5,000.00正在被视为5(它会在点击逗号后立即将其解释为数字),然后您获得5 - 100.10 -95.10 (我想你在你的例子中没有离开.10

您需要先转换:

$value1 = floatval(str_replace(',', '', $original_value1))
$value2 = floatval(str_replace(',', '', $original_value2))

我在这里假设你最初将它们作为字符串。这些删除了逗号分隔符。

答案 1 :(得分:1)

听起来你在UI中使用计算混淆了渲染。

用户看到根据其区域设置规则呈现的货币(例如美国的字符串“$ 1,000.00”)是完全合理的,但后面的计算需要在浮点数(例如1000.0)上完成。

所以你必须能够在它们之间来回转换。您不能对String进行算术运算。最好将String解析为float,执行操作,然后将其转换回String以进行渲染。