80.14666666666668 のような double 変数があり、80.14666666 のように 8 桁になるまでフロア関数を使用して切り捨てました。ここで、この値を増やして、80.14666667 として回答を得たいと思います。
質問する
1427 次
4 に答える
2
あなたはsの本質に気づいていないかもしれませんdouble
。「数字」はありません。それらは、有理数のコンパクトなバイナリ エンコーディングです。したがって、プログラムでdouble
.
特定のニーズが丸めだけの場合は、;のround
代わりに関数を使用してください。それ以外の場合は、10 進数の数字を真に表すtruncate
を使用することを検討してください。BigDecimal
于 2013-06-03T13:09:59.127 に答える
0
簡単なアプローチは次のとおりです。
double myNumber = 80.14666666;
myNumber += (1 / 10^8); // = 80.14666667
それはあなたが探しているものですか?
于 2013-06-03T13:11:23.347 に答える
0
double には、実際には、想像する正確な値が含まれているわけではありません。これは、基になるフィールドが 2 進数として保持され、係数が 1/5 であるため 10 分の 1 を含めることができないためです。
代わりに、new BigDecimal("80.14666666") を使用して、それを new BigDecimal("0.00000001") ずつ増やすことができます。
このオブジェクトを初期化するために文字列を渡していることに注意してください。double を渡すと、BigDecimal は double の値に従って初期化されます。
于 2013-06-03T13:12:28.893 に答える