Сообщение Re[5]: Исправленная версия от 11.09.2019 4:46
Изменено 11.09.2019 6:17 rg45
Re[5]: Исправленная версия
Здравствуйте, watchmaker, Вы писали:
R>>Ну вот, исправил: https://ideone.com/xGqir9
W>Всё равно иногда выводится по три символа после точки: например https://ideone.com/msG3Jo
Задокументируем как фичу.
Ну а если серьезно, то понятно, что происходит. Фактический параметр: 99999999999999.90625 — мантисса слишком велика, что вызывает ожидаемую погрешность в математических функциях. А так как число близко к целой степени десятки, функция digits_before_point выдает 15 вместо ожидаемых 14. Что поделаешь, все имеет свою погрешность и свою область применимости. Наверное, и это можно исправить, путем усложнения функции digits_before_point. Стоит ли игра свеч — это уже зависит от строгости требований.
В то же время, судя потому, как тебе пришлось извратиться для получения нужного литерала, попасть в такую ситуацию не так-то просто
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. Стоит ли игра свеч, зависит от строгости требований.
В то же время, судя потому, как тебе пришлось извратиться для получения нужного литерала, попасть в такую ситуацию не так-то просто
R>>Ну вот, исправил: https://ideone.com/xGqir9
W>Всё равно иногда выводится по три символа после точки: например https://ideone.com/msG3Jo
Задокументируем как фичу.
Ну а если серьезно, то понятно, что происходит. Фактический параметр: 99999999999999.90625 — мантисса слишком велика, что вызывает ожидаемую погрешность в математических функциях. А так как число близко к целой степени десятки, функция digits_before_point выдает 15 вместо ожидаемых 14. Что поделаешь, все имеет свою погрешность и свою область применимости. Наверное, и это можно исправить, путем усложнения функции digits_before_point. Стоит ли игра свеч, зависит от строгости требований.
В то же время, судя потому, как тебе пришлось извратиться для получения нужного литерала, попасть в такую ситуацию не так-то просто