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;
}
これで完璧に動作しますが、数学的計算を行っていると、わずかに double のエラーが発生します。10 を cos(60) で割ると、0.5 になります。答えは 20.0 のはずですが、プログラムは 20.000000000000004 を返します (その番号をコピーしました)。while ループが動かなくなり、プログラムがハングします。
何か案は?(または、数字の桁をチェックするための他の優れたソリューション!)