java学习---double去零和精度问题

之前写计算器作业的时候,偶然发现自己输入式子出现了精度问题,在小可爱的建议下,限制计算器输出的位数。

以下是解决方案:

DecimalFormat df = new DecimalFormat( ".00000000 ");

Double num = Double.parseDouble(df.format(numbers.get(unknown)));

this.result = "="+BigDecimal.valueOf(num).stripTrailingZeros().toPlainString();


备注:DecimalFormat是NumberFormat的一个具体子类,用于格式化十进制数字。括号内的表明需要的数字格式。

例如:如果输入“0.00”,就代表数字结果均为类似2.33这样的结构。

现在我写“.00000000”就是指将输出的数字的小数点后的位数限制在八位以内。


但是!!!

后来输出之后,我发现,我的所有结果都变成了。。。类似“3.50000000”的 ̄△ ̄。

然后还有一个问题需要去掉之后的0了。

根据查询,可以用java.math中的BigDecimal类中的stripTrailingZeros()方法去掉double后无意义的零。

BigDecimal 类提供以下操作:算术、标度操作、舍入、比较、哈希算法和格式转换。)

BigDecimal类的静态方法valueOf(double)可以将double数值转换成BigDecimal,然后再调用去零方法。

toPlainString()方法可以将BigDecimal转换成不带指数的String。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值