有没有办法从BigDecimal获得双倍而没有指数?
例如:我有new BigDecimal("123456797676.897")
如果我打印new BigDecimal("123456797676.897").toString()
,它会正确打印为123456797676.897
。
现在假设我尝试打印new BigDecimal("123456797676.897").doubleValue()
,它会以1.23456797676897E11
等指数打印。
有没有什么方法可以得到指数值的双值。
谢谢:)
答案 0 :(得分:2)
以下程序演示了这两者完全相同:
new BigDecimal("123456797676.897").doubleValue()
123456797676.897
1.23456797676897E11
12.3456797676897E10
Double toString方法必须为每个值选择一个表示。对于大于10 7 的数字,它使用指数表示法,小数点前有一位数。这是一个普遍合理的选择,但并不总是正确的选择。如果您希望在没有指数的情况下显示它,请使用DecimalFormat。如果你只是使用这个数字,那么Double的#String是否会以指数显示它并没有区别,你也不需要做任何事情。
import java.math.BigDecimal;
public class Test {
public static void main(String[] args) {
double doubleValue = new BigDecimal("123456797676.897").doubleValue();
double simpleLiteral = 123456797676.897;
double exponent11Literal = 1.23456797676897E11;
double exponent10Literal = 12.3456797676897E10;
System.out.println(doubleValue == simpleLiteral);
System.out.println(doubleValue == exponent11Literal);
System.out.println(doubleValue == exponent10Literal);
}
}
输出:
true
true
true