Информация об изменениях

Сообщение Re[2]: Java пытается маскировать неточную природу double-ов от 21.02.2022 12:03

Изменено 21.02.2022 12:04 vsb

Re[2]: Java пытается маскировать неточную природу double-ов
Здравствуйте, Mr.Delphist, Вы писали:

MD>А какую задачу решаем? Если нужна прямо вот точность-точность, то для этого есть всякая Big Math (BigInteger, BigDecimal). Если же хочется оставаться на стандартных типах, то принимаем условия игры про диапазоны значений и точность.


Я не в курсе условий этой игры.

Предположу. Пусть у нас есть три последовательно идущие double значения: a, b, c. У которых есть точные однозначные значения, выражаемые их представлением в IEEE-формате.

Разделим границы: bMin = (a + b) / 2, bMax = (b + c) / 2. Тоже точные однозначные значения. Т.е. есть последовательные числа a, bMin, b, bMax, c. bMin и bMax в double уже не влазят, но на бумажке написать можно.

И далее считаем, что окружение имеет право менять b на любое значение в рамках между bMin и bMax в операциях toString (и, наверное, ещё в каких-то).

Верно ли я выразил эти правила? В рамках этих правил Java может быть и права.
Re[2]: Java пытается маскировать неточную природу double-ов
Здравствуйте, Mr.Delphist, Вы писали:

MD>А какую задачу решаем? Если нужна прямо вот точность-точность, то для этого есть всякая Big Math (BigInteger, BigDecimal). Если же хочется оставаться на стандартных типах, то принимаем условия игры про диапазоны значений и точность.


Я не в курсе условий этой игры.

Предположу. Пусть у нас есть три последовательно идущие double значения: a, b, c. У которых есть точные однозначные значения, выражаемые их представлением в IEEE-формате.

Разделим границы: bMin = (a + b) / 2, bMax = (b + c) / 2. Тоже точные однозначные значения. Т.е. есть последовательные числа a, bMin, b, bMax, c. bMin и bMax в double уже не влазят, но на бумажке написать можно.

И далее считаем, что окружение имеет право менять b на любое значение в рамках между bMin и bMax в операциях toString (и, наверное, ещё в каких-то). Например на то, длина которого в десятичной записи минимальна.

Верно ли я выразил эти правила? В рамках этих правил Java может быть и права.