我使用java大十进制如下:
class test bigDecimal{
private BigDecimal decimalResult;
public boolean iterate(String value) {
if (value == null) {
return true;
}
System.out.println("value is: " + value);
BigDecimal temp = new BigDecimal(value);
System.out.println("temp val is: " + temp);
if (decimalResult == null) {
decimalResult = temp;
} else {
decimalResult = decimalResult.add(temp);
}
return true;
}
}
我用来创建大十进制的所有字符串的小数位数均为 6。例如:123456.678000、456789.567890
但是如果我给出一个大的字符串列表作为输入并检查总和,我会得到小数点后 8 位数字的输出。例如。类似:2939166.38847228。
我想知道为什么 BigDecimal 会改变这个比例?我所有输入的比例均为 6。
任何意见都将受到赞赏。 -谢谢
最佳答案
请阅读 BigDecimal 的 javadoc: http://download.oracle.com/javase/6/docs/api/java/math/BigDecimal.html 在内部,所有 BigDecimal 都会转换为某种内部格式。
如果您想获得特定的格式,您必须将其称为适当的。
例如,您可以将 scaleByPowerOfTen(int n)
与 n=6 一起使用
哦,顺便说一下,永远不要使用 new BigDecimal
,而是使用 BigDecimal.valueOf
。
编辑:
NumberFormat numberFormat = NumberFormat.getInstance();//此处使用区域设置
格式化字符串 = df.format(myUnformatedBigDecimal);
关于Java 大十进制问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6668026/