浮点数精度的问题

文章讨论了Java中浮点数(如double)在进行计算时可能出现的精度不足问题,指出0.0001加上0.0709的结果不等于预期的0.0710。为了解决这个问题,文章推荐使用Java提供的BigDecimal类来进行高精度的浮点数计算,并给出了示例代码,演示如何使用BigDecimal进行加法操作以获取精确结果。
摘要由CSDN通过智能技术生成
  1. 浮点数精度存在的缺陷:精度不足
public class DecimalDemo {


    public static void main(String[] args) {
        double d1=0.0001;
        double d2=0.0709;
//        计算的结果应该:0.0710;
        double d3=d1+d2;
        System.out.println(d3);

计算结果显示

 2.当需要高精度的浮点数计算的时候——没有办法给出精确的结果

Java给出了一个工具——BigDecimal:用于处理高精度的浮点计算

首先:导入Java所提供的工具:import java.math.BigDecimal;

BigDecimal使用:

  BigDecimal b1=new BigDecimal("0.0001");
  BigDecimal b2 = new BigDecimal("0.0709");
  BigDecimal b3=b1.add(b2);
  System.out.println(b3);

package com.qf.javase.day02;
import java.math.BigDecimal;
//        导入Java所提供的工具

/**
 * 浮点类型的数据存在的缺陷
 * @author hh
 * @version 1.0
 * @date 2023/4/19 10:24
 */
public class DecimalDemo {
//    精度不足:

    public static void main(String[] args) {
        double d1=0.0001;
        double d2=0.0709;
//        计算的结果应该:0.0710;
        double d3=d1+d2;
        System.out.println(d3);
//        当需要高精度的浮点数计算的时候——没有办法给出精确的结果
//        对于高精度的浮点计算,java给出了工具——BigDecimal
        BigDecimal b1=new BigDecimal("0.0001");
        BigDecimal b2 = new BigDecimal("0.0709");
        BigDecimal b3=b1.add(b2);
//BigDecimal两数相加
        System.out.println(b3);
    }
}

                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值