Модераторы: ginnie, korob2001
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Неправильно считает ? 
:(
    Опции темы
admsasha
Дата 27.11.2008, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 28.1.2005

Репутация: нет
Всего: 6



Вот простой код
Код

$a= (-68.63)+(-59.01)+(68.63)+(59.01);
print $a;

вывод
Код

7.105427357601e-15


Почему так ? И как сделать, чтобы был "0"

Это сообщение отредактировал(а) admsasha - 27.11.2008, 09:50
PM MAIL WWW ICQ Jabber   Вверх
amg
Дата 27.11.2008, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 9
Всего: 50



Цитата(admsasha @  27.11.2008,  09:49 Найти цитируемый пост)
И как сделать, чтобы был "0"

$a = 0 if abs($a) < 1e-15;
PM MAIL   Вверх
Itsys
Дата 27.11.2008, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: нет
Всего: 34



Код

sprintf("%.2f", $a)

PM MAIL WWW Skype   Вверх
ginnie
Дата 27.11.2008, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 6
Всего: 49



Цитата(admsasha @  27.11.2008,  09:49 Найти цитируемый пост)
Почему так ?


Дело в том, что Perl не может любое действительное число представить во встроенном типе данных. Некоторые значения приходится округлять. Из-за округления и получаются такие "странные" результаты.

P.S. Числа с плавающей запятой и их особенности
What Every Computer Scientist Should Know About Floating Point Arithmetic

Это сообщение отредактировал(а) ginnie - 27.11.2008, 13:33


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: Системное программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к системному программированию на Perl
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0459 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.