PHP中带小数的简单数学运算

时间:2012-10-29 20:02:21

标签: php math simplexml decimal

这是杀了我的!我从未遇到过这么多麻烦,我无法弄清楚我在这里做错了什么。

如果我有一个数字,比如说2.32,我想用它做数学,那就不行了。最简单的例子:

$income = $commission; //Commission is 2.32, retrieved from XML
echo "income: $income<br>";
$income100 = $income*100;
echo "income100: $income100<br>";

我得到的结果是:

income: 2.32
income100: 200

如何在不改变数学的情况下准确地使用十进制数字?

非常感谢!

4 个答案:

答案 0 :(得分:5)

您需要以下列方式指定$income以摆脱基础SimpleXMLElement

$income = (float) $commission;

Example of what happens when you don't

$x = simplexml_load_string("<a>2.4</a>");
echo $x * 100; // output:  200

答案 1 :(得分:2)

除了使用Float之外,还要确保在对浮点数执行算术运算时使用BC Math函数。具体来说是bcmul()

$income100 = bcmul($income, 100);

答案 2 :(得分:0)

浮点数的问题在于你不能用它们表示十进制数(除非它可以写成整数a/ba的{​​{1}},即使那时也是如此babs(a) < pow(2,52)是2的力量。

使用字符串函数获取整数值可能会更好:

b

这将从小数部分中分割整数部分,确保decima部分长度为两位,并将其推到整数部分的末尾,从而有效地将原始数字乘以100。

答案 3 :(得分:0)

我认为最简单的解决方案是将其转换为floatval()

的浮点数

$income = floatval($comission)

保留其余代码,它应该按预期工作。