Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: работа с дробными числами
 
 автор: speedsoft   (29.12.2011 в 22:21)   письмо автору
 
 

Всем добрый вечер. Подскажите, почему на выходе мы получаем 7, а не 8 ?

$x = (0.1+0.7) * 10;
echo intval ( $x ) ,"<br />"; //вывод - 7

  Ответить  
 
 автор: cheops   (29.12.2011 в 22:39)   письмо автору
 
   для: speedsoft   (29.12.2011 в 22:21)
 

При работе с дробными числами происходит накопление ошибки вычисления, тут получается, что она отрицательная, а intval() не округляет числа, он просто отбрасывает дробную часть. Хуже того, у вас один раз может получаться 7, другой - 8. Если нужно именно математическое округление, лучше замените intval() на функцию round().

  Ответить  
 
 автор: speedsoft   (29.12.2011 в 23:07)   письмо автору
 
   для: cheops   (29.12.2011 в 22:39)
 

Спасибо. я так и предполагал, что из-за погрешности, смущало что 0.8+0.1 или 0.6+0.1 давали верный результат.

  Ответить  
 
 автор: cheops   (29.12.2011 в 23:23)   письмо автору
 
   для: speedsoft   (29.12.2011 в 23:07)
 

С дробными числами ухо в остро нужно держать.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования