php round 0.999不起作用,php round的问题(取精度结果不正确)

php

发现使用PHP round函数进行小数控制的时候,有问题,如下所示:

round(9999999999999.99, 2) 期望值:9999999999999.99;实际值:10000000000000

round(1111111111111.11, 2) 期望值:1111111111111.11;实际值:1111111111111.1

请问有没有遇到类似问题的?这个是PHP已知缺陷吗?没有看到官方发布的相关说明。

注:我机器上PHP版本是5.3.6

回复讨论(解决方案)

round函数没有问题

$a = 1111111111111.11;echo $a;

round函数没有问题

$a = 1111111111111.11;echo $a;

$a = 1111111111111.11;

echo $a;

这段代码说明了什么?并没有调用round?

round函数没有问题

$a = 1111111111111.11;echo $a;

$a = 1111111111111.11;

echo $a;

这段代码说明了什么?并没有调用round?

输出结果是1111111111111.1,说明脚本编译期间就将1111111111111.11转换成1111111111111.1了。

可能是php的浮点类型由于精度的原因不能存储1111111111111.11。

你没有看php官方的说明吗?” 所以永远不要相信浮点数结果精确到了最后一位”

round函数没有问题

$a = 1111111111111.11;echo $a;

$a = 1111111111111.11;

echo $a;

这段代码说明了什么?并没有调用round?

输出结果是1111111111111.1,说明脚本编译期间就将1111111111111.11转换成1111111111111.1了。

可能是php的浮点类型由于精度的原因不能存储1111111111111.11。

你没有看php官方的说明吗?” 所以永远不要相信浮点数结果精确到了最后一位”

那想要完整显示我例举的数字应该如何处理?

round函数没有问题

$a = 1111111111111.11;echo $a;

$a = 1111111111111.11;

echo $a;

这段代码说明了什么?并没有调用round?

输出结果是1111111111111.1,说明脚本编译期间就将1111111111111.11转换成1111111111111.1了。

可能是php的浮点类型由于精度的原因不能存储1111111111111.11。

你没有看php官方的说明吗?” 所以永远不要相信浮点数结果精确到了最后一位”

那想要完整显示我例举的数字应该如何处理?

你还是没有看官方的说明,里面说的很清楚了,自己找答案去吧

round函数没有问题

$a = 1111111111111.11;echo $a;

$a = 1111111111111.11;

echo $a;

这段代码说明了什么?并没有调用round?

输出结果是1111111111111.1,说明脚本编译期间就将1111111111111.11转换成1111111111111.1了。

可能是php的浮点类型由于精度的原因不能存储1111111111111.11。

你没有看php官方的说明吗?” 所以永远不要相信浮点数结果精确到了最后一位”

那想要完整显示我例举的数字应该如何处理?

你还是没有看官方的说明,里面说的很清楚了,自己找答案去吧

OK,thanks

浮点数只能保存有限数位的值

php 已经提供了高精度数学函数库 BC、GMP

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL的ROUND函数用于对查询结果进行四舍五入。然而,有时候可能会出现该函数不起作用的情况。这可能是由于函数的参数不正确导致的。在引用中的示例中,参数为负数时,ROUND函数会按照绝对值最接近的整数进行四舍五入。所以,对于-0.358和-0.538,ROUND函数会返回0。这意味着负数的四舍五入结果可能不是你所期望的。在引用中的问题描述中也提到了这个问题。 另外,在引用中的示例中,第一个参数为456.538,第二个参数为负数。这里的负数表示要将第一个参数的小数点向左移动的位数。对于456.538和-2,ROUND函数会将小数点向左移动两位,然后进行四舍五入。所以,结果是456.54。同样地,对于456.538和-3,ROUND函数会将小数点向左移动三位,然后进行四舍五入。所以,结果是500。 综上所述,要正确使用MySQL的ROUND函数,需要确保参数的正确性,并注意负数参数的处理方式。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [MySQL之函数ROUND](https://blog.csdn.net/weixin_42299140/article/details/113631673)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [MySQL之ROUND函数四舍五入的陷阱](https://download.csdn.net/download/weixin_38724535/14833437)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值