double计算误差

double计算误差

https://img1.sycdn.imooc.com//climg/61e2cc6f0860233114930836.jpg

看了视频,老师讲的这里我还是不太懂,5.6+7.8不是应该算出来的结果是13.4吗,为什么是13.399999999999999,这是因为什么原因产生的呢?遇到这种情况该如何办才能达到准确的结果呢?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小小 2022-01-16 11:47:03

同学你好,使用Java的double进行运算时,可能出现精度丢失的问题,总是在一个正确的结果左右,所以如果需要小数高进度运算时,建议使用BigDecimal。参考代码如下:

1
2
3
4
5
6
7
8
9
10
11
import java.math.BigDecimal;
 
public class Test {
    public static void main(String[] args) {
        BigDecimal numA = new BigDecimal(Double.toString(5.6));
        BigDecimal numB = new BigDecimal(Double.toString(7.8));
        BigDecimal bigDecimal = numA.add(numB);
        double result =bigDecimal.doubleValue();
        System.out.println(result);
    }
}

祝学习愉快~

  • 那float变量在运算时是否也存在精度丢失的问题?

    2022-01-16 17:45:19
  • 同学你好,float也是会有精度丢失问题的,需要小数高精度运算时,建议使用BigDecimal。

    1
    2
    3
    BigDecimal num1 = new BigDecimal(Float.toString(5.6F));
    BigDecimal num2 = new BigDecimal(Float.toString(7.8F));
    System.out.println(num1.add(num2));// 相加

    祝学习愉快~

    2022-01-16 18:26:00
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码