Как я могу предотвратить усечение чисел с плавающей точкой и двойников в Java и C? - PullRequest
1 голос
/ 11 октября 2008

Когда я даю Java и C большие значения типа float и double (в миллиардном диапазоне), они конвертируют их в научную нотацию, теряя при этом точность. Как я могу остановить это поведение?

Ответы [ 2 ]

12 голосов
/ 11 октября 2008

Для Java проверьте BigDecimal

8 голосов
/ 11 октября 2008

Преобразование в научную нотацию - это просто эффект отображения. Изменение отображения зависит от того, как вы его выводите (спецификаторы формата)

числа с плавающей точкой обычно имеют точность около 6 цифр, что делает их неуместными для хранения числа в миллиардах. Двойные числа имеют точность около 15 цифр, поэтому они должны быть в состоянии удерживать числа за триллионы с полной точностью.

Для отображения двойного в C:

printf("%10f", dbl);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...