【发布时间】:2019-09-19 06:59:28
【问题描述】:
我需要将这两个字符串 "0.0000000" 和 "0.0000008" 转换为 BigDecimal 而不会丢失尾随的 0。
我试过 String.format
String format = "%." + precision + "f";
BigDecimal divisor = new BigDecimal(Math.pow(10, precision));
formattedAmount = amountValue.divide(divisor).setScale(precision, BigDecimal.ROUND_DOWN);
String str= String.format(format, formattedAmount);
System.out.println(str);
BigDecimal strb = new BigDecimal(str);
System.out.println(strb);
我希望这两个字符串 "0.0000000" 和 "0.0000008" 以 BigDecimal 的形式返回,没有像 0.0000000 和 这样的指数0.0000008。但我得到 0E-7 和 8E-7。 我需要 0.0000000 和 0.0000008 作为 BigDecimal 而不是 String。
【问题讨论】:
-
“我期待这两个字符串” 和 “as BigDecimal not as String” 是相反的陈述。你想要哪个?
-
BigDecimal.doubleValue()呢? -
@Phil :我可以使用 .plainString() 方法实现我想要的输出,但此方法将返回 String 而不是 BigDecimal。就像如果您将此字符串“1234.567890”转换为 BigDecimal,它将返回 1234.567890,但在“0.0000000”的情况下,它将返回 0E-7 而不是 0.0000000。我希望你明白我要说的话。谢谢。
-
0.0000008(BigDecimal, not String) 与8E-7(BigDecimal, not String) 完全相同 - 如果您 打印 或显示它(GUI、控制台),您将得到一个代表该值的String,这是不同的 -
@AashuY 当您在
System.out.println(...)中打印 bigDeciamal 对象时,它也会返回一个字符串,因为.toString()方法将被自动调用。这只是输出格式的问题。在任何情况下 bigDecimal 的值都是一样的,不管有没有指数
标签: java