Re: [请益] 数值大小于问题

楼主: GALINE (天真可爱CQD)   2016-10-11 22:01:26
※ 引述《kiey (炼)》之铭言:
: $a = 14525.8000;
: $b = 1231.0000;
: $c = 11.8;
: $d = floor($b)*$c;
: echo $a*1 < ($b*$c)? 'true ':'false ' ; //T
: echo round($a,4) > round(floor($b)*$c,4)? 'true ':'false ' ; //F
: echo $a < $d? 'true ':'false ' ; //T
: 想请问一下 为什么结果会是 true false true 呢?
: 就我的观念应该是要 f f f 才对 = =
: 有请先进指教
推荐搜寻关键字:“浮点数 误差”或“浮点数 精确度”
用白话说明是这样
PHP(跟几乎所有电脑程式)的小数是用浮点数来表示的
而浮点数常常会跟你实际要的数字差一点点,很小一点
所以
- 多做几次运算可能会出现奇妙的尾差
- 拿来比大小通常 OK,但是数字应该要一样的时候有时会爆炸
然后整数没这个问题
===============================
另外你可以试一下
$a = 14525.8000;
$b = 1231.0000;
$c = 11.8;
$d = floor($b)*$c;
var_export($a);
echo "\n";
var_export($b*$c);
echo "\n";
var_export($d);
echo "\n";
在我的电脑上输出结果是:
14525.799999999999
14525.800000000001
14525.800000000001
作者: LPH66 (-6.2598534e+18f)   2016-10-12 00:01:00

Links booklink

Contact Us: admin [ a t ] ucptt.com