|
|
|
| Всем добрый вечер. Подскажите, почему на выходе мы получаем 7, а не 8 ?
$x = (0.1+0.7) * 10;
echo intval ( $x ) ,"<br />"; //вывод - 7
|
| |
|
|
|
|
|
|
|
для: speedsoft
(29.12.2011 в 22:21)
| | При работе с дробными числами происходит накопление ошибки вычисления, тут получается, что она отрицательная, а intval() не округляет числа, он просто отбрасывает дробную часть. Хуже того, у вас один раз может получаться 7, другой - 8. Если нужно именно математическое округление, лучше замените intval() на функцию round(). | |
|
|
|
|
|
|
|
для: cheops
(29.12.2011 в 22:39)
| | Спасибо. я так и предполагал, что из-за погрешности, смущало что 0.8+0.1 или 0.6+0.1 давали верный результат. | |
|
|
|
|
|
|
|
для: speedsoft
(29.12.2011 в 23:07)
| | С дробными числами ухо в остро нужно держать. | |
|
|
|