CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  PHP

浮点数相减问题

楼主zhwb36()2006-01-03 09:57:26 在 Web 开发 / PHP 提问

<?  
  $a   =   15521.42;  
  $b   =   15480.3;  
  echo   $a-$b;  
   
  ?>  
  在PHP4.0环境下,不支持BCMath,出来的结果竟是41.120000000001,不知道是否与BCMath有关?  
  有类似情况的朋友,说说你们的解决方法呢?  
  实在是太奇怪了,这样的数据也不大,精度也不高,在PHP5。0下是没有这个问题的 问题点数:20、回复次数:4Top

1 楼zalvsa(水米)回复于 2006-01-03 10:50:50 得分 0

PHP的运算有时候确实会出现类似的问题。有时候我用number_format格式化一下就好了。不过我也没找到原因。。。。。。Top

2 楼hsboy(PHP it!)回复于 2006-01-03 11:00:14 得分 10

正常的,这与计算机内部浮点数表示形式有关。浮点数计算不可能打到100%精度,这一点不光PHP中存在。  
   
  正确方法是计算完成后使用round函数取得想要精度的浮点数,比如  
  <?  
  $a   =   15521.42;  
  $b   =   15480.3;  
  echo   round($a-$b,   2);  
   
  ?>  
  会输出41.12Top

3 楼zalvsa(水米)回复于 2006-01-03 11:50:22 得分 10

有时候经过round运算后的值会变成科学记数法的形式。Top

4 楼hsboy(PHP it!)回复于 2006-01-03 19:58:52 得分 0

呵呵,正确的方法就是用round函数,number_format返回结果是字符串,也就是说返回的是字符串“41.12”而不是数字41.12,如果这个结果还要进行其他运算而不是直接进行输出,则使用number_format的效率会低很多。  
   
  你可以在中间过程使用round函数,输出前再使用number_format确保输出的格式。Top

相关问题

  • 浮点数相加
  • 关于浮点数
  • 时间相减,可以得到相减的秒数?
  • 浮点数的问题
  • 浮点数运算问题
  • 浮点数精度问题
  • asp浮点数的问题
  • 浮点数转换问题
  • 日期型的数据怎么相减~~??
  • 日期相减如何得到天数!

关键词

  • 函数
  • 浮点数
  • 精度
  • 运算
  • 输出
  • round函数
  • 问题
  • 使用
  • 方法
  • 结果

得分解答快速导航

  • 帖主:zhwb36
  • hsboy
  • zalvsa

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo