2014-02-05 16 views
0

那么你们如何在php中进行数学计算以确保你得到正确的anwser?因为我们知道,当PHP类型转换截断掉的小数部分(* 99999),所以我们不会得到一个正确的答案,如:克服php的数学局限性像小数部分

print ((0.1+0.7) * 10) //8 
print (int) ((0.1+0.7) * 10) //7 

一个解决方案将是:

print (int) round(((0.1+0.7) * 10)) //8 

但我不知道这是否是最好的解决方案,我问这是因为现在,在大多数情况下,当我们使用noSQL或其他东西时,我们需要对数据进行类型转换,那么你们如何克服这些情况呢?

+0

同样,[float precision](http://www.php.net/manual/en/language.types.float.php)。好主人,那'0.1'和​​'0.7'是从手册中拿的,不是吗? –

+0

是的,先生,这是正确的 – user2885793

+0

PHP手册说..因此,永远不要相信浮点数结果到最后一个数字,也不要直接比较浮点数的相等性。如果需要更高的精度,则可以使用任意的精度数学函数和gmp函数 –

回答

0

首先,你的问题强加于处理float值时PHP的错误。不是这样。您所遇到的问题无论在哪里,都可以在任何语言中使用浮点数学。

一些用于财务计算的编程语言提供了保证浮点正确性的特殊值类型“money”或“decimal”。唯一等价的PHP必须提供的是“任意精度数学”模块:http://de1.php.net/manual/en/book.bc.php

请注意,这对于用于每个值的存储,性能以及如何将值传输到其他位置有一些含义。尽管如此,通常情况下,你会与浮点值不精确性相处得相当不错。