作者GALINE (天真可爱CQD)
看板PHP
标题Re: [请益] 数值大小於问题
时间Tue Oct 11 22:01:26 2016
※ 引述《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
--
Sent from my little pony
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.27.53.129
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/PHP/M.1476194491.A.E72.html
※ 编辑: GALINE (114.27.53.129), 10/11/2016 22:07:28