У меня возникла небольшая проблема с функцией, которая мне нужна в моей Java-программе. Я хочу проверить общее количество цифр, которое имеет «двойная» переменная. (например: 5 должен возвращать 1, 5.0034 должен возвращать 5, а 2.04 должен возвращать 3.) Моя функция такова:
private int getDoubleLength (double a) {
int len = 0;
while (a != (int) a) {
a *= 10;
}
while (a > 1) {
len ++;
a/=10;
}
System.out.println(String.format("Double %f has %d digits.",a,len));
return len;
}
Теперь это работает отлично, но когда я делаю некоторые математические вычисления, вы получаете небольшие ошибки удвоения: я делю 10 на cos(60), что равно 0,5. Ответ должен быть 20.0, но программа выдает 20.000000000000004 (это число я скопировал). Мой цикл while застревает, и программа зависает.
Есть идеи? (Или другие отличные решения для проверки цифр числа!)