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。参考代码如下:

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。

    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下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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