の小数点以下の桁数が3以下であることを確認する効果的な方法を見つけたいと思います。double値を持つ小数点以下の数を見つける効率的な方法
double num1 = 10.012; //True
double num2 = 10.2211; //False
double num2 = 10.2; //True
現在、私は正規表現の分割とカウントインデックスを使用しています。以下のように。私はたくさんのこの 関数を呼び出すことになりますので、
String[] split = new Double(num).toString().split("\\.")
split[0].length() //num of decimal places
これを行うには、効率的か良い方法はありますか?
ダブルは正確な表現ではないため、2.112は2.119999999になる可能性があるので、あなたはここで問題があると思います。 BigDoubleを使う方がいいですか? – vikingsteve
ここで重要な違いは、「double」は、数学的に*(例えば)100万位の非ゼロ値を持つが、文字列に変換されたときの値を含むことは完全に可能です* しない。これは、IEEE-754倍精度バイナリ浮動小数点の喜びです。文字列表現から得られる桁数は、その値を隣接する表現可能な値と区別するために必要な数だけです。 –
@vikingsteveそれは私が傾いているものですが、私の主な関心事は記憶にあります。どのように効率的なメモリがBidDoubleであるかのように –