Javaでは、1234.56
や類似のBigDecimalのような浮動小数点を$1,234.56
のような文字列に効率的に変換するにはどうすればよいですか。
私は以下を探しています:
文字列12345.67
は文字列$12,345.67
になります
また、Float
とBigDecimal
を使用してこれを行うことも検討しています。
適切に機能するロケール依存のイディオムがあります。
import Java.text.NumberFormat;
// Get a currency formatter for the current locale.
NumberFormat fmt = NumberFormat.getCurrencyInstance();
System.out.println(fmt.format(120.00));
現在のロケールが米国にある場合、println
は$ 120.00を出力します
もう一つの例:
import Java.text.NumberFormat;
import Java.util.Locale;
Locale locale = new Locale("en", "UK");
NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);
System.out.println(fmt.format(120.00));
これは印刷されます:£120.00
DecimalFormat moneyFormat = new DecimalFormat("$0.00");
System.out.println(moneyFormat.format(1234.56));
入力と出力に応じたコードは次のとおりです。:
プログラムの出力は、BigDecimalと数値の両方で$ 12,345.67で、floatでも機能します。
import Java.math.BigDecimal;
import Java.text.DecimalFormat;
import Java.text.DecimalFormatSymbols;
public class test {
public static void main(String[] args) {
DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setGroupingSeparator(',');
String pattern = "$#,##0.###";
DecimalFormat decimalFormat = new DecimalFormat(pattern, symbols);
BigDecimal bigDecimal = new BigDecimal("12345.67");
String bigDecimalConvertedValue = decimalFormat.format(bigDecimal);
String convertedValue = decimalFormat.format(12345.67);
System.out.println(bigDecimalConvertedValue);
System.out.println(convertedValue);
}
}