14 / 0 / 1
Регистрация: 14.07.2011
Сообщений: 51
|
|
1 | |
Неправильный результат умножения25.03.2012, 19:14. Показов 2904. Ответов 10
Метки нет (Все метки)
Доброго времени суток господа.
Работая в Eclipse SDK Version: 3.7.0 при попытке умножить 1.1 на (-0.1) получаю -0.11000000000000001 Тип double. То же самое с float: -0.11000001 Так как мне нужна соответствующая точность, эти результаты меня не радуют. Возможно, кто-то поможет?
0
|
25.03.2012, 19:14 | |
Ответы с готовыми решениями:
10
Неправильный результат выполнения программы Даны числа от 1 до 1000 и число m; вывести результат умножения куба нечетных сотен на число m Знак умножения, неправильный вывод Неправильный результат |
25.03.2012, 21:11 | 2 | |||||
таким образом можно получить локализированный формат, или
свой создать
0
|
26.03.2012, 07:33 | 3 |
Типы с плавающей точкой - плохой выбор, если нужны точные вычисления.
Стоит обратить внимание на тип с фиксированной запятой - BigDecimal, или использовать тип-дробь BigFraction
0
|
14 / 0 / 1
Регистрация: 14.07.2011
Сообщений: 51
|
|
26.03.2012, 22:23 [ТС] | 4 |
И все же ... Разве Оракл не обращает на это внимание? И скорее всего им это известно .. Хотя кто знает
Решил я эту проблему по-своему, изменил коэффициент и все стало на свои места. Так что могу пожелать быть осторожным =)
0
|
20 / 20 / 3
Регистрация: 13.07.2011
Сообщений: 73
|
|
26.03.2012, 22:35 | 5 |
В книгах, да именно в тех разделах, которые программисты пропускают как простые, как раз и рассказывают про неточность типов float и double.
Кому интересна причина, так это в особенности записи числа с плавающей точной с отрицательным знаком (и не только с отрицательным). Когда двоичное число "делают" отрицательным, его инвертируют и добавляют единицу. То есть, там в младших разрядах остается что-то, вот оно и при выводе округляется и получается 1. С числами, что ближе к 0, вероятность такого велика.
0
|
aleksandy
|
27.03.2012, 10:23
#7
|
Не по теме: Удивляет меня поразительная частота возникновения подобных вопросов. Неужели сложно по форуму поискать? Может админам надо создать и закрепить какую-нибудь тему типа FAQ?
0
|
14 / 0 / 1
Регистрация: 14.07.2011
Сообщений: 51
|
|
10.04.2012, 01:00 [ТС] | 8 |
Кстати искал, по даному разделу, но ничего толком не нашел.
Добавлено через 1 минуту Да ,но я такой ошибки не заметил на с/с++, где я тоже проверял код
0
|
10.04.2012, 01:11 | 9 |
это утверждение тоже повторяют с такой же частотой, не читавшие документацию по C++ и java, думая что если printf чёт там делает за них, то они понимают что происходит
и это не ошибка, это так работает вычисление во всех языках программирования поддерживаю aleksandy, надо уже прилеплять вверху темку для FAQ и дать доступ туда писать, alexandy, turbanoff, MK{цыфры}, Золотцу, Скипи. возможно кто предложит и меня
0
|
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
|
|
10.04.2012, 12:07 | 10 |
Это известно не только им. Это известно также разработчикам процессоров, компиляторов, программного обеспечения и вообще всем, кто знает, что такое вычисления с плавающей точкой, как представляются такие числа в памяти и что из этого следует. Всё это, собственно, является следствием неукоснительного соблюдения стандарта IEEE754: http://en.wikipedia.org/wiki/IEEE_754-2008
0
|
10.04.2012, 14:00 | 11 |
вот и Скипи попал в инфинити луп по поводу плавающей точки С++ versus Java )))
я уже раз 5 итераций в нём )))
0
|
10.04.2012, 14:00 | |
10.04.2012, 14:00 | |
Помогаю со студенческими работами здесь
11
Неправильный результат Неправильный результат base64_encode Выводит неправильный результат Неправильный результат char Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |