可能性のある複製:
Javaで数値を小数点以下n桁に丸める方法
Floatを小数点以下2桁に丸めるのが困難です。私はここで見たいくつかの方法を試してみましたが、単にMath.round()
を使用するだけです。
私が処理しているフロートのリストがあり、リストの最初は_1.2975118E7
_として表示されます。 _E7
_とは何ですか?
Math.round(f)
(fはfloat)を使用すると、まったく同じ数値が得られます。
私は何か間違ったことをしていることを知っています。
数字を_x.xx
_の形式にするだけです。最初の番号は_1.30
_などである必要があります。
_1.2975118E7
_は 科学表記法 です。
_1.2975118E7 = 1.2975118 * 10^7 = 12975118
_
また、Math.round(f)
は整数を返します。希望の形式_x.xx
_を取得するために使用することはできません。
_String.format
_ を使用できます。
_String s = String.format("%.2f", 1.2975118);
// 1.30
_
通貨のフォーマット(指定しなかったが、それがあなたが探しているものであると思われる)を探しているなら、NumberFormat
クラスを試してください。とても簡単です:
double d = 2.3d;
NumberFormat formatter = NumberFormat.getCurrencyInstance();
String output = formatter.format(d);
どちらが出力されますか(ロケールによって異なります):
$2.30
また、通貨が必要ない場合(小数点以下2桁のみ)、代わりにこれを使用できます:
NumberFormat formatter = NumberFormat.getNumberInstance();
formatter.setMinimumFractionDigits(2);
formatter.setMaximumFractionDigits(2);
String output = formatter.format(d);
2.30
を出力します
DecimalFormat
を使用して、希望するスタイルを指定できます。
DecimalFormat df = new DecimalFormat("0.00E0");
double number = 1.2975118E7;
System.out.println(df.format(number)); // prints 1.30E7
科学表記法であるため、10未満の数値を取得することはできません7 精度の桁を失うことなく。