PHP非常小的小数会导致错误

PHP非常小的小数会导致错误,php,floating-point,decimal,floating-accuracy,Php,Floating Point,Decimal,Floating Accuracy,PHP在处理小小数/浮点数时出错。以下面的代码为例: $spotPrices['entry'] = 1.6591; $price['o'] = 1.65908; $currentresult = $spotPrices['entry'] - $price['o']; echo $currentresult; 我希望它能输出0.00002(答案)。但它却输出:-1.9999999999E-5 为什么要这样做,更重要的是,我如何才能得到正确的结果 我在论坛上做了一些搜索,发现浮点值适合PHP

PHP在处理小小数/浮点数时出错。以下面的代码为例:

$spotPrices['entry'] = 1.6591;
$price['o'] = 1.65908;

$currentresult = $spotPrices['entry'] - $price['o'];

echo $currentresult;
我希望它能输出
0.00002
(答案)。但它却输出:
-1.9999999999E-5

为什么要这样做,更重要的是,我如何才能得到正确的结果



我在论坛上做了一些搜索,发现浮点值适合PHP,但还没有找到解决方案或解决办法来回答我的问题。

我的计算器说结果应该是0.00002

使用数字格式:

$currentresult = number_format($spotPrices['entry'] - $price['o'], 8);

我的计算器说结果应该是0.00002

使用数字格式:

$currentresult = number_format($spotPrices['entry'] - $price['o'], 8);

不是0.00002,而是1.9999999999E-5,即0.0000199999909。这是由于浮点精度。精度取决于平台。你可以在这里读到:

你得到的是1.9999999999E-5,而不是0.0000199999999。这是由于浮点精度。精度取决于平台。您可以在此处阅读:

您输入了错误,$spotPrice vs$spotPrice如果您需要浮点精度,您应该查看高精度库,如bcmath,或者干脆不使用浮点(转换为整数,即值*10000并在显示时更改)。您输入了错误,$spotPrice vs$spotPrice如果您需要浮点精度,您应该查看高精度库,如bcmath,或者干脆不使用浮点(转换为整数,即值*10000,并在显示时更改)。但是他得到的是-1.99999909E-5,所以我认为他给我们看的是一个不同的代码,我想这是一个打字错误。我复制了他的代码,得到了一个正数。但是他得到了-1.99999999909E-5,所以我想他给我们看的是另一个代码。我认为这是一个打字错误。我复制了他的代码,得到了一个正数。使用number\u格式适用于我的应用程序,谢谢使用number\u格式适用于我的应用程序,谢谢