|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.06.2014, 11:30 | #1 |
crafter
Форумчанин
Регистрация: 03.09.2011
Сообщений: 127
|
Почему 31.4 != ( 3.14 * 10.0 )
Долго не мог понять почему:
Код:
Оказывается 3.14*10.0 != 31.4. Почему? |
05.06.2014, 11:43 | #2 |
Старожил
Регистрация: 03.01.2014
Сообщений: 2,870
|
Скорее всего, здесь издержки машинного представления вещественных чисел.
Данные числа, в отличие от целых, "в лоб" лучше не сравнивать. Даже если число с конечным числом знаков после запятой , то лучше округлить до нужного числа знаков. То есть, попробуйте округлит результат вычисления 3,14*10 до 1 знака после запятой. |
05.06.2014, 12:25 | #3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
проблема в машинном представлении вещественных чисел.
Ознакомьтесь с темой Вещественные числа НЕЛЬЗЯ сравнивать. Почитайте по этой ссылке статьи... |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
А почему бы? | ZuBy | О форуме и сайтах клуба | 6 | 16.09.2013 19:00 |
Почему? С++ | xitrec1zaraza | Помощь студентам | 5 | 15.03.2011 20:02 |
Почему 0? | Nikita++ | Помощь студентам | 4 | 20.10.2010 19:39 |
Почему? | logok | Общие вопросы C/C++ | 2 | 12.04.2010 21:59 |
Почему? | Sota | О форуме и сайтах клуба | 4 | 26.07.2007 16:26 |