PHP算术运算的一个奇怪问题

帖子列表 发布于 2013/05/10 17:39
阅读 202
收藏 0
PHP
$num = 69677.40;

var_dump($num);//float(69677.4)

$num = $num * 100;

var_dump($num);// float(6967740)
var_dump(gettype($num));// double

$num = $num / 10;
var_dump(gettype($num));// double
var_dump($num); // float(696774)

$num = (int) $num;
var_dump($num); // int(696773)

为什么是696773, 不是696774, 少了1
加载中
0
hmh
帖子列表
帖子列表
回复 @hmh : thx
hmh
hmh
回复 @李马燕 : round($num) 用这个可以大概能解决你要转成整形的问题!
帖子列表
帖子列表
看明白了,可是通常这种问题要如何解决呢,难道在结果中+1?
0
南湖船老大
南湖船老大
基础是硬伤
帖子列表
帖子列表
0
我不叫大脸猫
我不叫大脸猫
浮点数的存储形式导致了浮点计算是不精确的计算,浮点计算只能在允许的误差范围内比较
0
oiio
oiio

好像这个在命令行模式下和直接运行程序 的结果都不一样


0
GSMLG
GSMLG
var_dump(0.2+0.7 === 0.9 )
0
沙虫虫
var_dump(0.2+0.7 === 0.9 )    这永远都不可能等于的- -!
返回顶部
顶部