这是PHP的BUG????????????

Demon1221 2003-08-23 12:16:37
<?
if((2.1-1)==1.1) echo "1"."<br>";
if((2.2-1)==1.2) echo "2"."<br>";
if((2.3-1)==1.3) echo "3"."<br>";
if((2.4-1)==1.4) echo "4"."<br>";
if((2.5-1)==1.5) echo "5"."<br>";
if((2.6-1)==1.6) echo "6"."<br>";
if((2.7-1)==1.7) echo "7"."<br>";
if((2.8-1)==1.8) echo "8"."<br>";
if((2.9-1)==1.9) echo "9"."<br>";
?>
我得到的结果是
1
4
5
6
9
弄不明白上面的各行有什么不一样的?
我的环境是IIS5 +WIN2K SERVER +php-4.3.2-Win32(安全模式)
大家测试一下 看看是不是真的有问题?

谁能解释一下为什么?
...全文
82 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Demon1221 2003-08-23
  • 打赏
  • 举报
回复
要是我需要比较 什么办法好呢?
vitalgg 2003-08-23
  • 打赏
  • 举报
回复
在计算机内
2.1-1有可能等于1.09999999999999999999999999999999999999999999999999999999999999999
vitalgg 2003-08-23
  • 打赏
  • 举报
回复
不要对浮点数进行全等比较.
Demon1221 2003-08-23
  • 打赏
  • 举报
回复
换成
<?
if((float)(2.1-1)==(float)1.1) echo "1"."<br>";
if((float)(2.2-1)==(float)1.2) echo "2"."<br>";
if((float)(2.3-1)==(float)1.3) echo "3"."<br>";
if((float)(2.4-1)==(float)1.4) echo "4"."<br>";
if((float)(2.5-1)==(float)1.5) echo "5"."<br>";
if((float)(2.6-1)==(float)1.6) echo "6"."<br>";
if((float)(2.7-1)==(float)1.7) echo "7"."<br>";
if((float)(2.8-1)==(float)1.8) echo "8"."<br>";
if((float)(2.9-1)==(float)1.9) echo "9"."<br>";
?>
结果还是一样的
Demon1221 2003-08-23
  • 打赏
  • 举报
回复
3X
vitalgg 2003-08-23
  • 打赏
  • 举报
回复
if((int)round((2.3-1)*10)==(int)round(1.3*10)) echo "3"."|";

echo (int)(1.3*10)."|";
echo (int)((2.3-1)*10)."<br>\n";

21,886

社区成员

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

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