【发布时间】:2015-06-17 13:56:53
【问题描述】:
我必须转换一个 BigDecimal 值,例如2.1200,来自数据库的字符串。当我使用BigDecimal 的toString() 或toPlainString() 时,它只打印值2.12 而不是尾随零。
如何将BigDecimal 转换为字符串而不丢失尾随零?
【问题讨论】:
标签: java bigdecimal
我必须转换一个 BigDecimal 值,例如2.1200,来自数据库的字符串。当我使用BigDecimal 的toString() 或toPlainString() 时,它只打印值2.12 而不是尾随零。
如何将BigDecimal 转换为字符串而不丢失尾随零?
【问题讨论】:
标签: java bigdecimal
试试这个..
MathContext mc = new MathContext(6); // 6 precision
BigDecimal bigDecimal = new BigDecimal(2.12000, mc);
System.out.println(bigDecimal.toPlainString());//2.12000
【讨论】:
MathContext mc = new MathContext(6); BigDecimal i = new BigDecimal(100.250, mc); System.out.println(i.toPlainString()); 如果我必须将从方法返回的 BigDecimal 对象转换为 String 怎么办?你在这里硬编码了值吗?
要将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
【讨论】:
value是什么吗?
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());
【讨论】:
你可以使用下面的代码。
BigDecimal d = new BigDecimal("1.200");
System.out.println(d);
System.out.println(String.valueOf(d));
输出如下:1.200
1.200
【讨论】:
实际上,不要使用BigDecimal,而是使用Double类的toString()。
【讨论】: