发现一个四舍五入奇怪的问题,有没有人可以解释下

ashengy 2015-05-08 11:04:11
代码:
//四舍五入取两位小数
$poundage = 0.105;
echo $poundage . "<BR>";
echo sprintf ( "%.2f", $poundage ) . "<BR>";
echo "<BR>-----------------------------<BR>";
$poundage = 0.205;
echo $poundage . "<BR>";
echo sprintf ( "%.2f", $poundage ) . "<BR>";
echo "<BR>-----------------------------<BR>";
$poundage = 0.305;
echo $poundage . "<BR>";
echo sprintf ( "%.2f", $poundage ) . "<BR>";
echo "<BR>-----------------------------<BR>";
$poundage = 0.405;
echo $poundage . "<BR>";
echo sprintf ( "%.2f", $poundage ) . "<BR>";
echo "<BR>-----------------------------<BR>";

//显示结果
-----------------------------
0.105
0.10

-----------------------------
0.205
0.20

-----------------------------
0.305
0.30

-----------------------------
0.405
0.41

-----------------------------

按理说第三位为5,四舍五入,都应进1。可却出现了这种情况。有人知道为什么吗
...全文
128 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2015-05-08
  • 打赏
  • 举报
回复
建议你认真复习一下 计算机基础:浮点数的表示 printf('%.18f', 0.305); //0.304999999999999993
tottyandbaty 2015-05-08
  • 打赏
  • 举报
回复
sprintf 不具有四舍五入的功能
wirror800 2015-05-08
  • 打赏
  • 举报
回复
#4楼正解
引用 4 楼 lijpwsw 的回复:
http://www.laruence.com/2013/03/26/2884.html
小菜鸟czh 2015-05-08
  • 打赏
  • 举报
回复
round 函数四舍五入不就行了
lijpwsw 2015-05-08
  • 打赏
  • 举报
回复
浮点数有时候会丢失精度的

21,892

社区成员

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

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