将 BigDecimal Number 转换为 ###.# 的格式
Converting a BigDecimal Number to the format of ###.#
我正在尝试使 BigDecimal 变量中的数字与 ###.# 的格式匹配,无论传递什么数字,它都会以 ###.#
的形式出现
例如,如果我在 BigDecimal 变量中传递数字 1,该方法将 return 001.0
如果将 11.1 作为 BigDecimal 变量传递给我,该方法将 return 011.1
我已经有了一些使小数位匹配的代码
BigDecimal x = new BigDecimal(1);
DecimalFormat df = new DecimalFormat("#.0");
String formatted = df.format(x);
所以这会 return 1.0 但是我不知道如何在转换回 BigDecimal 之前让前导零出现。
有人可以帮助我或指出正确的方向吗?
谢谢大家
可以使用apache的StringUtils
StringUtils.leftPad(number.toString(), 3, '0');
其中第一个参数是要格式化的字符串,第二个参数是要验证的剩余位置数,最后一个参数是完整的字符。
雷格德斯。
使用 NumberFormat
实例,其中 Locale
使用 点 作为小数点分隔符。
final BigDecimal x = new BigDecimal("11.1");
final NumberFormat nf = NumberFormat.getNumberInstance(Locale.ENGLISH);
nf.setMinimumFractionDigits(1);
nf.setMaximumFractionDigits(1);
nf.setMinimumIntegerDigits(3);
final String formatted = nf.format(x);
NumberFormat
基本上是一个工厂,因此例如在这种情况下,getNumberInstance
返回的底层格式化程序是 DecimalFormat
。我总是喜欢从真正的实现中抽象出来。
您也可以决定是否显示分组逗号。
nf.setGroupingUsed(true); // 123,456.0 - default value is true
nf.setGroupingUsed(false); // 123456.0
使用new DecimalFormat("000.0")
例子
DecimalFormat df = new DecimalFormat("000.0", DecimalFormatSymbols.getInstance(Locale.US));
System.out.println(df.format(new BigDecimal("1"))); // prints: 001.0
System.out.println(df.format(new BigDecimal("11.1"))); // prints: 011.1
System.out.println(df.format(new BigDecimal("123.456"))); // prints: 123.5
System.out.println(df.format(new BigDecimal(".07"))); // prints: 000.1
System.out.println(df.format(new BigDecimal("123456"))); // prints: 123456.0
我正在尝试使 BigDecimal 变量中的数字与 ###.# 的格式匹配,无论传递什么数字,它都会以 ###.#
的形式出现例如,如果我在 BigDecimal 变量中传递数字 1,该方法将 return 001.0
如果将 11.1 作为 BigDecimal 变量传递给我,该方法将 return 011.1
我已经有了一些使小数位匹配的代码
BigDecimal x = new BigDecimal(1);
DecimalFormat df = new DecimalFormat("#.0");
String formatted = df.format(x);
所以这会 return 1.0 但是我不知道如何在转换回 BigDecimal 之前让前导零出现。
有人可以帮助我或指出正确的方向吗?
谢谢大家
可以使用apache的StringUtils
StringUtils.leftPad(number.toString(), 3, '0');
其中第一个参数是要格式化的字符串,第二个参数是要验证的剩余位置数,最后一个参数是完整的字符。
雷格德斯。
使用 NumberFormat
实例,其中 Locale
使用 点 作为小数点分隔符。
final BigDecimal x = new BigDecimal("11.1");
final NumberFormat nf = NumberFormat.getNumberInstance(Locale.ENGLISH);
nf.setMinimumFractionDigits(1);
nf.setMaximumFractionDigits(1);
nf.setMinimumIntegerDigits(3);
final String formatted = nf.format(x);
NumberFormat
基本上是一个工厂,因此例如在这种情况下,getNumberInstance
返回的底层格式化程序是 DecimalFormat
。我总是喜欢从真正的实现中抽象出来。
您也可以决定是否显示分组逗号。
nf.setGroupingUsed(true); // 123,456.0 - default value is true
nf.setGroupingUsed(false); // 123456.0
使用new DecimalFormat("000.0")
例子
DecimalFormat df = new DecimalFormat("000.0", DecimalFormatSymbols.getInstance(Locale.US));
System.out.println(df.format(new BigDecimal("1"))); // prints: 001.0
System.out.println(df.format(new BigDecimal("11.1"))); // prints: 011.1
System.out.println(df.format(new BigDecimal("123.456"))); // prints: 123.5
System.out.println(df.format(new BigDecimal(".07"))); // prints: 000.1
System.out.println(df.format(new BigDecimal("123456"))); // prints: 123456.0