> 백엔드 개발 > PHP 튜토리얼 > php round的问题(取精度结果不正确)

php round的问题(取精度结果不正确)

WBOY
풀어 주다: 2016-06-23 14:21:09
원래의
2333명이 탐색했습니다.

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;
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

参考php关于浮点类型精度的介绍吧
http://www.php.net/manual/zh/language.types.float.php

round函数没有问题

$a = 1111111111111.11;echo $a;
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

参考php关于浮点类型精度的介绍吧
http://www.php.net/manual/zh/language.types.float.php

$a = 1111111111111.11;
echo $a;
这段代码说明了什么?并没有调用round?


round函数没有问题

$a = 1111111111111.11;echo $a;
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

参考php关于浮点类型精度的介绍吧
http://www.php.net/manual/zh/language.types.float.php

$a = 1111111111111.11;
echo $a;
这段代码说明了什么?并没有调用round?

输出结果是1111111111111.1,说明脚本编译期间就将1111111111111.11转换成1111111111111.1了。
可能是php的浮点类型由于精度的原因不能存储1111111111111.11。
你没有看php官方的说明吗?" 所以永远不要相信浮点数结果精确到了最后一位"



round函数没有问题

$a = 1111111111111.11;echo $a;
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

参考php关于浮点类型精度的介绍吧
http://www.php.net/manual/zh/language.types.float.php

$a = 1111111111111.11;
echo $a;
这段代码说明了什么?并没有调用round?

输出结果是1111111111111.1,说明脚本编译期间就将1111111111111.11转换成1111111111111.1了。
可能是php的浮点类型由于精度的原因不能存储1111111111111.11。
你没有看php官方的说明吗?" 所以永远不要相信浮点数结果精确到了最后一位"


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




round函数没有问题

$a = 1111111111111.11;echo $a;
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

参考php关于浮点类型精度的介绍吧
http://www.php.net/manual/zh/language.types.float.php

$a = 1111111111111.11;
echo $a;
这段代码说明了什么?并没有调用round?

输出结果是1111111111111.1,说明脚本编译期间就将1111111111111.11转换成1111111111111.1了。
可能是php的浮点类型由于精度的原因不能存储1111111111111.11。
你没有看php官方的说明吗?" 所以永远不要相信浮点数结果精确到了最后一位"


那想要完整显示我例举的数字应该如何处理?
你还是没有看官方的说明,里面说的很清楚了,自己找答案去吧





round函数没有问题

$a = 1111111111111.11;echo $a;
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

参考php关于浮点类型精度的介绍吧
http://www.php.net/manual/zh/language.types.float.php

$a = 1111111111111.11;
echo $a;
这段代码说明了什么?并没有调用round?

输出结果是1111111111111.1,说明脚本编译期间就将1111111111111.11转换成1111111111111.1了。
可能是php的浮点类型由于精度的原因不能存储1111111111111.11。
你没有看php官方的说明吗?" 所以永远不要相信浮点数结果精确到了最后一位"


那想要完整显示我例举的数字应该如何处理?
你还是没有看官方的说明,里面说的很清楚了,自己找答案去吧

OK,thanks

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

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿