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

Сообщение Re[5]: Исправленная версия от 11.09.2019 4:46

Изменено 11.09.2019 6:20 rg45

Re[5]: Исправленная версия
Здравствуйте, watchmaker, Вы писали:

R>>Ну вот, исправил: https://ideone.com/xGqir9

W>Всё равно иногда выводится по три символа после точки: например https://ideone.com/msG3Jo

Задокументируем как фичу.

Ну а если серьезно, то понятно, что происходит. Фактический параметр: 99999999999999.90625 — мантисса слишком велика, что вызывает ожидаемую погрешность в математических функциях. А так как число близко к целой степени десятки, функция digits_before_point выдает 15 вместо ожидаемых 14. Что поделаешь, все имеет свою погрешность и свою область применимости. Наверное, и это можно исправить, путем усложнения функции digits_before_point. Стоит ли игра свеч, зависит от строгости требований.

В то же время, судя потому, как тебе пришлось извратиться для получения нужного литерала, попасть в такую ситуацию не так-то просто
Re[5]: Исправленная версия
Здравствуйте, watchmaker, Вы писали:

R>>Ну вот, исправил: https://ideone.com/xGqir9

W>Всё равно иногда выводится по три символа после точки: например https://ideone.com/msG3Jo

Задокументируем как фичу.

Ну а если серьезно, то понятно, что происходит. Фактический параметр: 99999999999999.90625 — мантисса слишком велика, что вызывает ожидаемую погрешность в математических выражениях. А так как число близко к целой степени десятки, функция digits_before_point выдает 15 вместо ожидаемых 14. Что поделаешь, все имеет свою погрешность и свою область применимости. Наверное, и это можно исправить, путем усложнения функции digits_before_point. Стоит ли игра свеч, зависит от строгости требований.

В то же время, судя потому, как тебе пришлось извратиться для получения нужного литерала, попасть в такую ситуацию не так-то просто