为什么下面的代码打印出0.00而不是0?BigDecimalbig=newBigDecimal("0.00");big=big.stripTrailingZeros();System.out.println(big.toPlainString());以下是stripTrailingZeroes的文档:ReturnsBigDecimalwhichisnumericallyequaltothisonebutwithanytrailingzerosremovedfromtherepresentation.Forexample,strippingthetrailingzerosfromtheB
什么是为BigDecimal修剪两个以上尾随零的好方法所以1.2200会打印1.22而1.0000会打印1.00编辑以及返回1.222200作为1.2222和1.220000001为1.220000001等。所以忽略前两个零我想修剪任何传入的0而不是修剪非零值一种方法可能是相乘,然后应用内置修剪尾随零,然后除以100。极端情况可能会有问题,但我的问题中的值是基于货币的,并且永远不会超过Java设置的界限(否则这意味着我的软件正在处理以巨额美元计的出价)丑陋的解决方案如下System.out.println(((newBigDecimal("1.230223000").multiply(
我在我的代码中遇到了奇怪的错误。它与有关newBigDecimal("1.2300").stripTrailingZeros()返回1.23(正确)但是newBigDecimal("0.0000").stripTrailingZeros()返回0.0000(奇怪),因此没有任何反应为什么?如何解决? 最佳答案 这似乎是一个错误(JDK-6480539),已在Java8中修复(根据OpenJDK提交2ee772cda1d6)。Java早期版本的解决方法:BigDecimalzero=BigDecimal.ZERO;if(someBig
运行这个简单的程序:publicstaticvoidmain(finalString...args){System.out.println(BigDecimal.ZERO.scale());System.out.println(newBigDecimal("0").scale());System.out.println(newBigDecimal("0.0").stripTrailingZeros().scale());System.out.println(newBigDecimal("1.0").stripTrailingZeros().scale());}输出:0010我的问题很简