当小数位较长时,PHP回合显示不正确的数字

采取以下代码:

echo round(1215.49999);

我得到的答案是1215,这就是我想要的。

但是,当您编写此代码时:

echo round(1215.499999999999999);

我得到的答案是1216

这有什么特别的原因吗?我想1215在这两种情况下都结束。


蓝山帝景
浏览 186回答 2
2回答

当年话下

如果您想使用内置 PHP 函数而不是编写自己的函数,您可以使用bcdiv.您需要bcmath在 php.ini 文件中启用才能使用bcmath功能,这可能已经启用,但如果没有,它应该只是包含以下内容的情况:--enable-bcmath示例 1:echo bcdiv(1215.49999, 1, 2);示例 2:echo bcdiv(1215.499999999999999, 1, 2);上述两个示例都将输出1215.资料来源:来源 1来源 2来源 3

手掌心

如果输入 1215.499999999999999 从 php 被解释为浮点数,那么一切都为时已晚。这个数字与 1215.5 相同一个测试:var_dump(1215.499999999999999 === 1215.5); //bool(true)如果要对输入进行四舍五入,则必须使用 bcmat 并且输入为字符串。$input = '1215.499999999999999';echo bcadd($input,0.5,0);  //1215$input = '1215.5000000000000000';echo bcadd($input,0.5,0);  //1216
打开App,查看更多内容
随时随地看视频慕课网APP