为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
蓝山帝景 2022-07-29 12:28:29
采取以下代码:echo round(1215.49999);我得到的答案是1215,这就是我想要的。但是,当您编写此代码时:echo round(1215.499999999999999);我得到的答案是1216。这有什么特别的原因吗?我想1215在这两种情况下都结束。
查看完整描述

2 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

如果您想使用内置 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


查看完整回答
反对 回复 2022-07-29
?
手掌心

TA贡献1942条经验 获得超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


查看完整回答
反对 回复 2022-07-29
  • 2 回答
  • 0 关注
  • 182 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信