Heim > Backend-Entwicklung > PHP-Tutorial > php ceil取整的问题,求解。

php ceil取整的问题,求解。

WBOY
Freigeben: 2016-06-06 20:28:47
Original
1118 Leute haben es durchsucht

`var_dump(ceil(2.2*100)/100);
var_dump(ceil(strval(2.2*100))/100);`

输出的结果分别是
float 2.21
float 2.2
为什么这两种情况的值会不同?大神求解。

回复内容:

`var_dump(ceil(2.2*100)/100);
var_dump(ceil(strval(2.2*100))/100);`

输出的结果分别是
float 2.21
float 2.2
为什么这两种情况的值会不同?大神求解。

从某乎上看到的答案。虽然还是不明白底层原理。

浮点小数
很多普通的十进制小数在二进制下并不是有限位的小数,有限的数值位并不能精确地记录数字的值
所以你以为的2.20在
echo sprintf('%10.30f', 2.20*100);
的时候
看到的会是
220.000000000000028421709430404007

可能这和ceil二关,是浮点运算的问题吧。

结合 @jsutking 的实验,很容易理解第1个的答案是 2.21,因为它是 ceil(220.000000000000028421709430404007) 的结果。

而第 2 个,估计是 strval(2.2 * 100) 的时候自动取了一个不大的精度,ceil(220.0000000000000) 算出来都是 220 啦。

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage