number_format奇怪的计算问题

时间:2016-08-19 06:41:56

标签: php excel laravel-5

我正在处理财务申请。我将十进制存储为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

这三种不同的结果会影响最终的%结果。任何人都可以知道为什么会有所不同。

1 个答案:

答案 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