number_format与计算奇怪的问题

我正在从事金融应用。 我将小数点存储为20(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 

这三个不同的结果影响最终的结果。 谁能知道为什么这是不同的。

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