java double to BigDecimal convertion添加额外的尾随零

时间:2017-05-02 12:09:23

标签: double bigdecimal

filteredUsersInCity

print output => double d =0.0000001; BigDecimal d1 = BigDecimal.valueOf(d); System.out.println(d1.toPlainString()); 我期待0.00000010

2 个答案:

答案 0 :(得分:1)

首先,要获得精确的BigDecimal值,请避免使用floatdouble对其进行初始化。根据定义,从文本到浮点类型的转换不能保证精确。从这种类型到BigDecimal的转换是准确的,但可能不会完全产生您期望的结果。

如果您可以避免使用doublefloat进行初始化,那么请执行以下操作:

BigDecimal d = new BigDecimal("0.0000001");

这已经为您提供了所需的输出,因为从(十进制)文本到BigDecimal的转换是精确的。

但如果你真的必须double转换,请尝试:

double d = 0.0000001;
BigDecimal d1 = BigDecimal.valueOf(d);
System.out.println(d1.stripTrailingZeros().toPlainString());

这将剥离(删除)任何尾随零。

答案 1 :(得分:0)

您可以使用DecimalFormat格式化BigDecimal

double d = 0.0000001;
BigDecimal d1 = BigDecimal.valueOf(d);
DecimalFormat df = new DecimalFormat("#0.0000000");
System.out.println(df.format(d1));