表达式3-2.6==0.4的值是什么?

本文深入探讨了Java中浮点数运算的不精确性及其解决方法,通过代码演示展示了使用BigDecimal类进行精确计算的过程与结果,旨在帮助开发者避免常见的精度错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    今天在一本书上看到的,觉得很有道理,又涨知识了,就来分享一下.

   1.我的第一反应就是为true,因为'-'的运算等级比'=='高,所以0.4==0.4,

然后就是true,可是这是错的

 

    2.代码演示:

  

package Test;

import java.math.BigDecimal;

public class sss {

	public static void main(String[] args) {
		
		sss ss = new sss();
		ss.ImpreciseResult();
		ss.PrecisionResult();
	}
	
	public void ImpreciseResult(){
		
		System.out.println(3-2.6);//输出3和2.6的差值
		System.out.println(3-2.6==0.4);//输出比较结果
		
	}
	
	public void PrecisionResult(){
		
		BigDecimal  x = new BigDecimal("3");//创建3的BigDecimal对象
		BigDecimal  y = new BigDecimal("2.6");//创建2.6的BigDecimal对象
		BigDecimal z=x.subtract(y);//计算3和2.6的差值
		double value=z.doubleValue();//转成double
		System.out.println(value);//计算结果
		System.out.println(value==0.4);//比较结果
	}
}

  

  3.运行结果:

  
  
 

  看到了吧,原因是:Java中基本类型的浮点数运算是不精确的,在实际中,为了得到精确的计算结果,对于浮点数的运算一般不使用基本数据类型来实现,而是使用BigDecimal类实现.

   希望对你有帮助.

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值