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

javagang 2013-09-05 03:20:27
发现使用PHP round函数进行小数控制的时候,有问题,如下所示:

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

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

注:我机器上PHP版本是5.3.6
...全文
830 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2013-09-05
  • 打赏
  • 举报
回复
浮点数只能保存有限数位的值 php 已经提供了高精度数学函数库 BC、GMP
javagang 2013-09-05
  • 打赏
  • 举报
回复
引用 5 楼 hengyu654 的回复:
[quote=引用 4 楼 javagang 的回复:] [quote=引用 3 楼 hengyu654 的回复:] [quote=引用 2 楼 javagang 的回复:] [quote=引用 1 楼 hengyu654 的回复:] round函数没有问题

$a = 1111111111111.11;
echo $a;
参考php关于浮点类型精度的介绍吧 http://www.php.net/manual/zh/language.types.float.php
$a = 1111111111111.11; echo $a; 这段代码说明了什么?并没有调用round?[/quote] 输出结果是1111111111111.1,说明脚本编译期间就将1111111111111.11转换成1111111111111.1了。 可能是php的浮点类型由于精度的原因不能存储1111111111111.11。 你没有看php官方的说明吗?"所以永远不要相信浮点数结果精确到了最后一位" [/quote] 那想要完整显示我例举的数字应该如何处理?[/quote] 你还是没有看官方的说明,里面说的很清楚了,自己找答案去吧[/quote] OK,thanks
hengyu654 2013-09-05
  • 打赏
  • 举报
回复
引用 4 楼 javagang 的回复:
[quote=引用 3 楼 hengyu654 的回复:] [quote=引用 2 楼 javagang 的回复:] [quote=引用 1 楼 hengyu654 的回复:] round函数没有问题

$a = 1111111111111.11;
echo $a;
参考php关于浮点类型精度的介绍吧 http://www.php.net/manual/zh/language.types.float.php
$a = 1111111111111.11; echo $a; 这段代码说明了什么?并没有调用round?[/quote] 输出结果是1111111111111.1,说明脚本编译期间就将1111111111111.11转换成1111111111111.1了。 可能是php的浮点类型由于精度的原因不能存储1111111111111.11。 你没有看php官方的说明吗?"所以永远不要相信浮点数结果精确到了最后一位" [/quote] 那想要完整显示我例举的数字应该如何处理?[/quote] 你还是没有看官方的说明,里面说的很清楚了,自己找答案去吧
javagang 2013-09-05
  • 打赏
  • 举报
回复
引用 3 楼 hengyu654 的回复:
[quote=引用 2 楼 javagang 的回复:] [quote=引用 1 楼 hengyu654 的回复:] round函数没有问题

$a = 1111111111111.11;
echo $a;
参考php关于浮点类型精度的介绍吧 http://www.php.net/manual/zh/language.types.float.php
$a = 1111111111111.11; echo $a; 这段代码说明了什么?并没有调用round?[/quote] 输出结果是1111111111111.1,说明脚本编译期间就将1111111111111.11转换成1111111111111.1了。 可能是php的浮点类型由于精度的原因不能存储1111111111111.11。 你没有看php官方的说明吗?"所以永远不要相信浮点数结果精确到了最后一位" [/quote] 那想要完整显示我例举的数字应该如何处理?
hengyu654 2013-09-05
  • 打赏
  • 举报
回复
引用 2 楼 javagang 的回复:
[quote=引用 1 楼 hengyu654 的回复:] round函数没有问题

$a = 1111111111111.11;
echo $a;
参考php关于浮点类型精度的介绍吧 http://www.php.net/manual/zh/language.types.float.php
$a = 1111111111111.11; echo $a; 这段代码说明了什么?并没有调用round?[/quote] 输出结果是1111111111111.1,说明脚本编译期间就将1111111111111.11转换成1111111111111.1了。 可能是php的浮点类型由于精度的原因不能存储1111111111111.11。 你没有看php官方的说明吗?"所以永远不要相信浮点数结果精确到了最后一位"
javagang 2013-09-05
  • 打赏
  • 举报
回复
引用 1 楼 hengyu654 的回复:
round函数没有问题

$a = 1111111111111.11;
echo $a;
参考php关于浮点类型精度的介绍吧 http://www.php.net/manual/zh/language.types.float.php
$a = 1111111111111.11; echo $a; 这段代码说明了什么?并没有调用round?
hengyu654 2013-09-05
  • 打赏
  • 举报
回复
round函数没有问题

$a = 1111111111111.11;
echo $a;
参考php关于浮点类型精度的介绍吧 http://www.php.net/manual/zh/language.types.float.php
原型名称:优质可视化大屏模板图表组件RP文件 软件版本:Axure9(支持10、11) 文件大小:28M 文件页数:16页 原型简介: 【1】数据可视化设计组件包含:常用组件、图标元素、菜单面板、数字字体;常用组件包含:常用按钮、动态公告栏、常用输入框、常用搜索框、时间轴组件、标签列表、下拉选择框、按钮选项组、分页组件、轮播图组件、视频播放器、表格组件、日期天气组件等;图标元素包含近百个图标元素可用于可视化设计使用;菜单面板包含多套大屏中间页菜单组合案例;数字字体包含多套不同风格字体的数字组件。 【2】数据可视化图表组件包含:常用图表、美化图表、图表动效、图表尺寸、数值展示、排行展示、地图组件、图表色板;常用图表包含:柱状图、条形图、圆环图、折线图、面积图、堆叠图等;美化图表包含各种立体图表、渐变图表如立体柱状图、立体圆柱图、渐变柱状图、渐变曲线图、渐变面积图、对比图等;动效图表提供动态交互案例;图表尺寸包含大小中各类尺寸图表案例;数值展示为可视化设计提供更多数值的设计案例;排行展示包含近20中排行列表组件的案例;如果有地图设计需要可以使用到地图组件;图表色板提供了可视化设计中专业的单色/渐变色组件。

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧