|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.02.2012, 21:48 | #1 |
Пользователь
Регистрация: 27.02.2010
Сообщений: 26
|
Странная арифметика Java
Здравствуйте.
Кто подскажет в чем дело, выполняю обычный пример (-3.4)+3, а ответ получаю совершенно необычный -0.4000001, и такой результат при сложении других чисел (-1.1+1 = -0.1000001; -2.7+2 = -0.7000001 и т.д.). С чем это может быть связано? В качестве типов данных пробовал использовать и float и double. |
05.03.2012, 19:52 | #2 |
Регистрация: 28.01.2008
Сообщений: 3
|
Добрый день!
Это не странная арифметика явы, а изъян чисел с плавающей точкой. Он есть во всех языках. У этих чисел после запятой может возникать милионные...миллиардные, которых вы на самом деле не присваивали. Из-за этого переменные данного типа нельзя просто сравнивать на равенство, их надо сравнивать с погрешностью. |
06.03.2012, 09:05 | #3 |
Пользователь
Регистрация: 14.11.2011
Сообщений: 15
|
Это связано с тем, что вычисления производятся в двоичной системе. Любая электронная вычислительная система из-за этого считает с погрешностью, это необходимо учитывать. В твоём случае достаточно просто округлить.
Можешь ради интереса разделить 1.0 на 1.0, тоже погрешность должна вырисовываться. |
06.03.2012, 22:15 | #4 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Проблема не в двоичной системе, а в представлении вещественных чисел. Они намеренно представлены с погрешностью в уплату за большие минимальное и максимальное значение при малых затратах памяти.
http://ru.wikipedia.org/wiki/Числа_с_плавающей_запятой |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
странная ошибка | Психвоплоти | Помощь студентам | 0 | 23.02.2011 15:01 |
Странная ошибка | STIFFmaster_LP | Помощь студентам | 2 | 06.11.2009 19:11 |
Странная задача. | GonZaleZ | Общие вопросы C/C++ | 6 | 19.09.2009 21:56 |
Странная загрузка | Лубышев | Операционные системы общие вопросы | 9 | 17.03.2008 09:24 |
Странная реакция | drknn | Помощь студентам | 2 | 02.09.2007 15:51 |