У меня небольшая проблема с функцией, которая мне нужна в моей Java-программе. Я хочу проверить общее количество цифр, которое есть в переменной типа double. (например: 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 зависает, и программа зависает.
Есть идеи? (Или другие отличные решения для проверки цифр числа!)