Maison > développement back-end > tutoriel php > php ceil取整的问题,求解。

php ceil取整的问题,求解。

WBOY
Libérer: 2016-06-06 20:28:47
original
1120 Les gens l'ont consulté

`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 啦。

Étiquettes associées:
php
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal