回答:
String.format("%1$,.2f", myDouble);
String.format
自動的にデフォルトのロケールを使用します。
String.format("%4.3f" , x) ;
これは、ansに合計4桁が必要であり、そのうち3桁が10進数の後にあることを意味します。また、fはdoubleのフォーマット指定子です。xは、検索する変数を意味します。私のために働いた。。。
String.format("%014.3f" , 58.656565)
-> 0000000058,657
:合計14個の記号:8つのゼロと5つの数字、1つのコンマ。したがって、この場合の数値14
は、結果の文字列内のシンボルの合計数(余分なものは先行ゼロで置き換えられますが、それがない場合はスペースで置き換えられます)を意味します。.3
一部はここで完全に独立しています。
String.format("%014.3f" , 58.656565)
-> 58,657
。私はそれがその.3f
部分に優先するのでそれを採用します:最初に小数点以下3桁で数値を出力し、記号が残っている場合は先行スペース(またはゼロ/何でも)を出力します。この場合、数値は2 + 3 + 1 = 6シンボルであり、4だけを印刷したかったため、余分なスペースはありません。
手動で設定したシンボルでフォーマットする場合は、次のようにします。
DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols();
decimalFormatSymbols.setDecimalSeparator('.');
decimalFormatSymbols.setGroupingSeparator(',');
DecimalFormat decimalFormat = new DecimalFormat("#,##0.00", decimalFormatSymbols);
System.out.println(decimalFormat.format(1237516.2548)); //1,237,516.25
ただし、ロケールベースのフォーマットが推奨されます。
このリンクから抽出されたコード。
Double amount = new Double(345987.246);
NumberFormat numberFormatter;
String amountOut;
numberFormatter = NumberFormat.getNumberInstance(currentLocale);
amountOut = numberFormatter.format(amount);
System.out.println(amountOut + " " +
currentLocale.toString());
この例の出力は、同じ数値の形式がロケールによってどのように異なるかを示しています。
345 987,246 fr_FR
345.987,246 de_DE
345,987.246 en_US
public class MainClass {
public static void main(String args[]) {
System.out.printf("%d %(d %+d %05d\n", 3, -3, 3, 3);
System.out.printf("Default floating-point format: %f\n", 1234567.123);
System.out.printf("Floating-point with commas: %,f\n", 1234567.123);
System.out.printf("Negative floating-point default: %,f\n", -1234567.123);
System.out.printf("Negative floating-point option: %,(f\n", -1234567.123);
System.out.printf("Line-up positive and negative values:\n");
System.out.printf("% ,.2f\n% ,.2f\n", 1234567.123, -1234567.123);
}
}
そしてプリントアウト:
3(3)+3 00003
デフォルトの浮動小数点形式:1234567,123000
カンマ付きの浮動小数点数:1.234.567,123000
負の浮動小数点のデフォルト:-1.234.567,123000
負の浮動小数点オプション:(1.234.567、 123000)ラインアップの正と負の値:
1.234.567,12
-1.234.567,12
これを行うには多くの方法があります。それらは以下のとおりです。
元の番号が以下のようになっているとします。
NumberFormat
丸めモードの使用
NumberFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
DecimalFormat decimalFormatter = (DecimalFormat) nf;
decimalFormatter.applyPattern("#,###,###.##");
decimalFormatter.setRoundingMode(RoundingMode.CEILING);
String fString = decimalFormatter.format(number);
System.out.println(fString);
文字列フォーマッターの使用
System.out.println(String.format("%1$,.2f", number));
すべての場合において、出力は次のようになります: 2354548.24
注:
丸め中にRoundingMode
フォーマッターを追加できます。次に示すのは、いくつかの丸めモードです。
decimalFormat.setRoundingMode(RoundingMode.CEILING);
decimalFormat.setRoundingMode(RoundingMode.FLOOR);
decimalFormat.setRoundingMode(RoundingMode.HALF_DOWN);
decimalFormat.setRoundingMode(RoundingMode.HALF_UP);
decimalFormat.setRoundingMode(RoundingMode.UP);
ここにインポートがあります:
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;
使用する DecimalFormat
NumberFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
DecimalFormat decimalFormatter = (DecimalFormat) nf;
decimalFormatter.applyPattern("#,###,###.##");
String fString = decimalFormatter.format(myDouble);
System.out.println(fString);
String.format(Locale.GERMAN, "%1$,.2f", myDouble);