[OK]を使用することができる多くの可能なパターンがあります。結果はプリミティブであるdouble
なので、あまりコントロールできません。
私の理解では、小数点以下を切り捨てることは望ましくありません。元の精度と希望する書式を組み合わせる必要があります。
オプションはほとんどありません。
BigDecimal numerator = new BigDecimal(numerator);
BigDecimal denominator = new BigDecimal(denominator);
BigDecimal div = numerator.divide(denominator);
BigDecimal
の場合、出力が改善されます。上記のコードに分子と分母として10
を入力すると、System.out.println(div)
は1
となります。 numerator
とdenominator
のいくつかの組み合わせは、二重直接使用し、二重の内部表現を超えて精度を心配あなたは、このような事態を回避したい場合
java.lang.ArithmeticException: "Non-terminating decimal expansion; no exact representable decimal result."
を投げ、そしてないので
一般的に、上記のコードの使用に注意してください。二重の数字を使用している場合
System.out.println(2312/2.543); //909.1624066063704
System.out.println(1.0/1.0); //1.0
System.out.println(1/1); //1
、あなたは、このようなあなたのケースでは0.0060
として、最後に0
を取得する可能性があります。あなたが取得しているものを確認したい場合は、
String dec = String.valueOf(10.0/10.0); //1.0
を使用してString
にあなたの結果を変換し、その最後の0
を根絶するために
String newDec = dec.endsWith("0") ? dec.substring(0, dec.length() - 1) : dec;
を使用する必要があります。もちろん、文字列が.0
で終わっている場合は、その先頭の文字を残すかどうかの選択に基づいて選択することができます。.