在Java中将BigDecimal转换为字符串时,如何删除不重要的零?

在Java中将BigDecimal转换为字符串时,如何删除不重要的零?,java,tostring,bigdecimal,Java,Tostring,Bigdecimal,java.math.BigDecimal.toString()可以返回类似“0.888200000”的值。如果我想要“0.8882”,我能做的最好的事情是什么?我永远无法知道(除非我针对每个特定情况计算)整数部分的长度(从左到右),该值可以是123.8882,与123456.88一样容易。使用stripTrailingZeros(): 返回一个BigDecimal,该值在数值上等于此值,但从表示形式中删除了任何尾随零 请参见或者,如果您喜欢正则表达式: Pattern p = Pattern.c

java.math.BigDecimal.toString()
可以返回类似“0.888200000”的值。如果我想要“0.8882”,我能做的最好的事情是什么?我永远无法知道(除非我针对每个特定情况计算)整数部分的长度(从左到右),该值可以是123.8882,与123456.88一样容易。

使用
stripTrailingZeros()

返回一个BigDecimal,该值在数值上等于此值,但从表示形式中删除了任何尾随零


请参见

或者,如果您喜欢正则表达式:

Pattern p = Pattern.compile("(.*?)0*$");
Matcher m = p.matcher(yourString);
String result=m.group(1);

这可能比
biginger
类在其
stripTrailingZeroes
方法内部所做的所有杂乱无章的事情都要快,谢谢。我错过了它,因为我正在编写Scala,它的标准BigDecimal包装器似乎没有StripTrailingZero:-(@Ivan:不管你使用哪种语言,库都是一样的,当然?所以希望它能正常工作(tm)是的,@t-j-crowder,但我们通常避免直接使用Java类型,除非在Scala中有必要-我们更喜欢使用Scala标准的“包装器”而不是类型(
Scala.math.BigDecimal
),但它确实封装了
Java.math.BigDecimal
,我们可以使用包装器不提供的方式访问它。这是一个方便的选择。谢谢。