Java で Double を切り捨てる
-
Java で
DecimalFormat
を使用して Double を切り捨てる -
Java で
BigDecimal
を使用して Double を切り捨てる - Java で Apache CommonLibrary を使用して 10 進数を切り捨てる
-
Java で
java.lang.Math
を使用して小数を切り捨てる
この記事では、Java で数値を小数点以下 n 桁に切り捨てまたは四捨五入する方法について説明します。Java には、double と float の 10 進値を格納するための 2つのプリミティブ型が用意されています。正確な値または四捨五入には、BigDecimal
クラスを使用することをお勧めします。
Java で DecimalFormat
を使用して Double を切り捨てる
DecimalFormat
は NumberFormat
のサブクラスであり、提供されているフォーマットパターンを使用して 10 進数をフォーマットできます。以下のコードでは、適切なフォーマットパターンを渡す DecimalFormat
のオブジェクトを作成しました。decimatFormat
オブジェクトで format()
メソッドを呼び出し、二重変数 d
をパラメーターとして渡すことができます。
format()
メソッドは、出力に示されているように、切り捨てられた文字列を返します。
import java.text.DecimalFormat;
public class DecimalFormatting {
public static void main(String args[]) {
double d = 9.4568982982989;
String pattern = "#.###";
DecimalFormat decimalFormat = new DecimalFormat(pattern);
String formattedDouble = decimalFormat.format(d);
System.out.println("Formatted double d = " + formattedDouble);
}
}
出力:
Formatted double d = 9.457
Java で BigDecimal
を使用して Double を切り捨てる
Java では、BigDecimal
は不変の任意精度の符号付き 10 進数です。スケールと精度を制御できます。文字列として変換された double を渡す BigDecimal
オブジェクトを作成し、概算値の表現に関する問題を防ぎます。
次に、この BigDecimal
オブジェクト bd
で setScale(int newScale, RoundingMode roundingMode)
メソッドを呼び出します。これは、返される BigDecimal のスケールと、適用する丸めモードの 2つの引数を取ります。モード RoundingMode.FLOOR
は負の無限大に向かって丸められます。
public class DecimalFormatting {
public static void main(String args[]) {
double d = 9.4568982982989;
BigDecimal bd = new BigDecimal(String.valueOf(d));
BigDecimal rounded = bd.setScale(2, RoundingMode.FLOOR);
System.out.println("BigDecimal rounded off : " + rounded);
}
}
出力:
BigDecimal rounded off : 9.45
Java で Apache CommonLibrary を使用して 10 進数を切り捨てる
以下に Maven の依存関係が示されているこのライブラリでも同じことができます。
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-math3</artifactId>
<version>3.5</version>
</dependency>
このライブラリの Precision.round()
メソッドを使用して、10 進数をフォーマットできます。このメソッドは 2つの引数を取ります。1つはフォーマットおよびスケーリングする 10 進変数です。小数点以下 4 桁が必要です。したがって、それが私たちに必要な規模です。出力には、10 進数の数字が切り捨てられていることが示されています。
import org.apache.commons.math3.util.Precision;
public class DecimalFormatting {
public static void main(String args[]) {
double d = 9.4568982982989;
double doubleP = Precision.round(d, 4);
System.out.println("Precision rounded off : " + doubleP);
}
}
出力:
Precision rounded off : 9.4569
Java で java.lang.Math
を使用して小数を切り捨てる
これは、Java で 10 進数を四捨五入するもう 1つの方法です。メソッド Math.pow()
は、10nで乗算および除算することにより、n
の小数点以下の桁数を制御します。このメソッドを使用して、基数 10 と累乗 3 の 2つの引数を取る二重変数 scale
を作成します。
Java の Math.round()
は、数値を最も近い整数に丸めるために使用されます。これは、数値に 1/2 を加算し、結果の下限を話し、結果を整数データ型にキャストすることによって行われます。この方法は、値が誤って切り捨てられることがあるため、お勧めしません。
public class DecimalFormatting {
public static void main(String args[]) {
double d = 9.4568982982989;
double scale = Math.pow(10, 3);
double doubleM1 = Math.round(d * scale) / scale;
System.out.println("Math1 Rounded off: " + doubleM1);
}
}
出力:
Math Rounded off: 9.45
Math1 Rounded off: 9.457
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn