|
44 / 44 / 11
Регистрация: 21.01.2013
Сообщений: 668
|
|||||||
Почему для Double и для Integer переполнение работает по разному?31.05.2014, 16:09. Показов 7074. Ответов 18
Метки нет (Все метки)
забавный код
вывод
0
|
|||||||
| 31.05.2014, 16:09 | |
|
Ответы с готовыми решениями:
18
Ошибка с циклом While. По разному работает с double и float, хотя должен бы одинаково Почему операторы инкремента действуют по разному для стандартных и нестандартных типов?
|
| 31.05.2014, 16:38 | ||||||
|
Это действительно интересно. Работая с Double примитивом, мы не можем выйти "за рамки".
Насколько мы помним, JVM выделяет под double 64 бита памяти, ровно столько же, как и под long. Теперь попробуем небольшую магию.
Полагаю, это какой-то трюк компилятора, по-видимому, разработчиками было задумано, что за рамки Максимального/минимального значения в примитиве Double выходить нельзя...
0
|
||||||
|
44 / 44 / 11
Регистрация: 21.01.2013
Сообщений: 668
|
||||||||
| 31.05.2014, 18:23 [ТС] | ||||||||
|
Freedomen,
Добавлено через 4 минуты Мне кажется это связано с тем, что числа с плавающей точкой это мантисса+порядок ближе к нулю порядок маленький, следовательно плотность точек большая, а ближе к Double.MAX_VALUE порядок большой и расстояние между соседними точками разряженное. хотелось бы узнать про Double.MAX_VALUE и INFINITY и как это соотносится с Float и с примитивами Добавлено через 1 минуту
0
|
||||||||
|
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
|
|
| 31.05.2014, 18:33 | |
|
http://docs.oracle.com/javase/... #jls-4.2.3
http://ru.wikipedia.org/wiki/IEEE_754-2008 http://en.wikipedia.org/wiki/IEEE_floating_point
0
|
|
|
44 / 44 / 11
Регистрация: 21.01.2013
Сообщений: 668
|
|||
| 31.05.2014, 18:50 [ТС] | |||
|
Somebody,
там вообще многовато буков для нашей конкретной беседы) что мне показалось относящимся к делу:
0
|
|||
| 31.05.2014, 19:26 | |||||||||||||||||||||
|
Это надо изучить современные компиляторы java, чтобы точно сказать - почему именно так. Вообще, Double тип изначально был разработан для хранения очень больших значений. К примеру, если вы работаете в области физики и считаете количество молекул во Вселенной, вряд ли это значение полностью поместится в int или даже long. Хотя есть BigInteger, но это несколько другая область.
Мне кажется, секрет таится в восприятии бесконечности разработчиками Java платформы. Возможно, пытаясь добавить что-то еще к максимуму, можно получить бесконечность, что уже перейдет в другую область математического восприятия чисел и реальности в целом. Именно поэтому они ограничивают возможные операции с double типом. Добавлено через 12 минут Интересненько.
Добавлено через 1 минуту Вот пример в док-во предыдущему посту.
![]() Добавлено через 2 минуты Действительно, это так, как я предполагал. В примере мы прибавляем очень большое число к максимуму, тем самым переходя в стадию бесконечности.
Все оказалось действительно так. Пример:
1
|
|||||||||||||||||||||
|
44 / 44 / 11
Регистрация: 21.01.2013
Сообщений: 668
|
||
| 01.06.2014, 00:49 [ТС] | ||
|
Freedomen, я бы добавил ещё к вашим словам свои)
Добавлено через 1 минуту Freedomen, таким образом можно вычислить расстояние между Double.MaxValue и Infinity. Может так и получится, что с учётом погрешности между ними один только шаг.
1
|
||
|
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
|
||||||
| 01.06.2014, 11:18 | ||||||
|
Поиграйте степенями у small
0
|
||||||
|
44 / 44 / 11
Регистрация: 21.01.2013
Сообщений: 668
|
||||||
| 01.06.2014, 15:19 [ТС] | ||||||
0
|
||||||
|
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
|
||||||
| 01.06.2014, 20:58 | ||||||
|
Это не совсем грань. У double примерно 16 значащих цифр - все остальные цифры, которые получаются при сложении отбрасываются. Когда Double.MAX_VALUE складывается с 23414, то чтобы записать полученное число надо 308 значащих цифр. Первые 16 цифр остаются, а все остальные отбрасываются - и эти отброшенные как раз и приходятся на число 23414.
Первая строка попадет в значащ. цифры и будет бесконечность, вторая - не попадет.
Math.nextUp на сколько понял, просто прибавляет к младшему биту единичку, т.е сразу меняет последнюю знач. цифру.
0
|
||||||
|
44 / 44 / 11
Регистрация: 21.01.2013
Сообщений: 668
|
|
| 01.06.2014, 21:51 [ТС] | |
|
0
|
|
|
44 / 44 / 11
Регистрация: 21.01.2013
Сообщений: 668
|
|||
| 01.06.2014, 23:00 [ТС] | |||
|
Добавлено через 26 минут KuKu, ну допустим в мантиссе 40 знаков, а порядок равен 10 Если у нас 16 значащих знаков, то у нас число будет иметь точность до 6 цифры после запятой? То есть из 40 знаков мантиссы мы можем забыть про последние 24?
0
|
|||
|
44 / 44 / 11
Регистрация: 21.01.2013
Сообщений: 668
|
|
| 02.06.2014, 00:00 [ТС] | |
|
0
|
|
|
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
|
|||
| 02.06.2014, 09:00 | |||
|
Если у нас есть десятичное число из 40 десятичных знаков. А мы можем хранить только 16 десятичных знаков, то последние 24 от нас уйдут.
0
|
|||
|
44 / 44 / 11
Регистрация: 21.01.2013
Сообщений: 668
|
|||
| 02.06.2014, 09:25 [ТС] | |||
|
допустим работаем с double d3 = d1+d2; d1 - большое число d2 - поменьше. Правильно я понимаю, что если первые 16(17) цифр суммы и d1 будут совпадать, то d3 == d1 -> true?
0
|
|||
|
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
|
|
| 02.06.2014, 09:35 | |
|
1
|
|
| 02.06.2014, 09:35 | |
|
Помогаю со студенческими работами здесь
19
почему в разных ОС по разному работает IntelliJ Почему функция strchr по разному работает при разных строках? Почему в WEB приложении и в обычном один и тот же код по разному работает? Почему не работает цикл while для заполнения и do while для вывода массива? Не корректно работает допустимый диапазон для double [Range(typeof(double), "0,00", "49,99")] Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Сочетание глобально распределённой вычислительной мощности и инновационных. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|