将BigDecimal转换为字符串时如何保留尾随零

14

我需要将从数据库中获取的BigDecimal值(例如2.1200)转换为字符串。使用BigDecimaltoString()toPlainString()方法只会输出值2.12,而不是尾随的零。

如何将BigDecimal转换为字符串而不丢失尾随零?


相关:https://dev59.com/Ym855IYBdhLWcg3w-JbS - Thomas Weller
5个回答

6
尝试这个...
MathContext mc = new MathContext(6); // 6 precision
BigDecimal bigDecimal = new BigDecimal(2.12000, mc);
System.out.println(bigDecimal.toPlainString());//2.12000

2
这并没有回答楼主的问题,因为他已经手头有一个 BigDecimal 对象了…… - GingerHead
是的,那是我的错误。现在看看我的答案吧,顺便感谢一下@GingerHead!! - Hiren
这假设6总是所需的精度。 - Naveed S
它对我没有起作用... 以下代码打印“100.25”:MathContext mc = new MathContext(6); BigDecimal i = new BigDecimal(100.250, mc); System.out.println(i.toPlainString());如果我需要将从方法返回的BigDecimal对象转换为字符串,该怎么办?你在此处硬编码了值,对吧? - sparker
是的@PadmanabhanVijendran,精度是硬编码的。我不明白你所说的转换。请详细说明或发布一个新问题,说明你尝试了什么,取得了什么成就以及你在哪里遇到了问题。 - Hiren

2
要将BigDecimal转换为带有特定格式的String,您需要使用DecimalFormat
BigDecimal value = .... ;
String pattern = "#0.0000"; // If you like 4 zeros
DecimalFormat myFormatter = new DecimalFormat(pattern);
String output = myFormatter.format(value);
System.out.println(value + " " + pattern + " " + output);

要检查模式的可能值,请参见此处DecimalFormat

(注:该链接提供了有关Java DecimalFormat类的详细信息,可用于格式化数字。)

你能说明一下什么是“value”吗? - GingerHead
值是您的BigDecimal。我编辑了答案以显示它。 - Davide Lorenzo MARINO
我知道它是什么…… - GingerHead

0
double value = 1.25;
// To convet double to bigdecimal    
BigDecimal bigDecimalValue = BigDecimal.valueOf(value);   
//set 4 trailing value
BigDecimal tempValue = bigDecimalValue.setScale(4, RoundingMode.CEILING);
System.out.println(tempValue.toPlainString());

0

您可以使用以下代码。

    BigDecimal d = new BigDecimal("1.200");
    System.out.println(d);
    System.out.println(String.valueOf(d));

输出如下:
1.200 1.200


-3
以实际情况来看,不要使用BigDecimal,而是使用Double类的toString()方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接