为什么以下代码的输出是用科学符号表示的?
BigDecimal val = new BigDecimal("0000.000000111");
System.out.println(val);输出:1.11e-8
但是这段代码的输出是十进制格式的。
BigDecimal val = new BigDecimal("0000.000011111");
System.out.println(val);输出:0.000011111
是否有办法为第一个字符串获得适当的十进制值(如第二个输出)?
发布于 2015-05-20 14:36:52
如果您查看BigDecimal的功能,它将解释如何创建输出:
接下来,计算一个调整的指数;这是负值,加上转换后的无标度值中的字符数,减去一个。也就是说,-scale+( ulength -1),其中ulength是以十进制数字表示的无标度值的绝对值的长度(其精度)。 如果标度大于或等于零,调整后的指数大于或等于-6,则该数字将被转换为字符形式,而不使用指数表示法。在这种情况下,如果小数点为零,则不添加小数点,如果小数点为正,则插入小数点,小数点的大小指定小数点右侧的字符数。
如果您希望输出没有e10表示法,请使用toPlainString()。
发布于 2015-05-20 14:35:07
使用toPlainString方法
BigDecimal val = new BigDecimal("0000.000011111");
System.out.println(val.toPlainString());https://stackoverflow.com/questions/30352694
复制相似问题