我正在处理财务申请。我将十进制存储为20,如double(30,20)。我在计算时遇到了奇怪的问题。我正在使用Laravel5.2。
在PHP,Laravel,Excel上有3种不同的结果
Input1 = 280.95000000000000
Input2 = 278.76250000000000
// Results Number_format to 14
$result = Input1 - Input2;
PHP = 2.18750000000000
Laravel = 2.18750000000006
Excel = 2.18749999999994
这三种不同的结果会影响最终的%结果。任何人都可以知道为什么会有所不同。
答案 0 :(得分:0)
Excel的精度最高可达15位数(8位)https://en.wikipedia.org/wiki/Numeric_precision_in_Microsoft_Excel。 Laraval有15位。 php有大约14位http://php.net/manual/en/language.types.float.php
由于许多数字不能精确地表示为小数,因此错误确实存在。一个简单的解决方案是移动小数点,使得只有整数。
Input1 = 280.9500000000*10000 -> 2809500
Input2 = 278.7625000000*10000 -> 2787625
result = (Input1-Input2)/10000 -> 21.875