格式化BigDecimal,没有科学记数法,具有完全精度

Men*_*sur 29 java string-formatting bigdecimal

我想一个转换BigDecimalString印刷的目的,但打印出所有的数字没有科学记数法.例如:

BigDecimal d = BigDecimal.valueOf(12334535345456700.12345634534534578901);
String out = d.toString(); // Or perform any formatting that needs to be done
System.out.println(out);
Run Code Online (Sandbox Code Playgroud)

我想要12334535345456700.12345634534534578901打印.现在我得到:1.23345353454567E+16.

Rei*_*eus 46

为了保持精度,BigDecimal你需要将值传递为String

BigDecimal d = new BigDecimal("12334535345456700.12345634534534578901");
System.out.println(d.toPlainString());
Run Code Online (Sandbox Code Playgroud)

  • @AchintyaJha:您在数字周围加上引号,对吗?这是对原始代码的更改(尽管没有明确解释) (2认同)

chr*_*her 17

这个BigDecimal班有一个toPlainString方法.调用此方法而不是标准toString,它将打印出完整的数字而无需科学记数法.

BigDecimal b = new BigDecimal("4930592405923095023950238502395.3259023950235902");
System.out.println(b.toPlainString());

Output: 4930592405923095023950238502395.3259023950235902
Run Code Online (Sandbox Code Playgroud)