filteredUsersInCity
print output => double d =0.0000001;
BigDecimal d1 = BigDecimal.valueOf(d);
System.out.println(d1.toPlainString());
我期待0.00000010
答案 0 :(得分:1)
首先,要获得精确的BigDecimal
值,请避免使用float
或double
对其进行初始化。根据定义,从文本到浮点类型的转换不能保证精确。从这种类型到BigDecimal
的转换是准确的,但可能不会完全产生您期望的结果。
如果您可以避免使用double
或float
进行初始化,那么请执行以下操作:
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));