美文网首页
Double类型运算的精度问题

Double类型运算的精度问题

作者: 木木点 | 来源:发表于2020-03-30 01:12 被阅读0次
GkbxOK.png

浮点数值不适用于无法接受舍入误差的计算中。

舍入误差的主要原因在于浮点数值采用二进制系统表示,而二进制系统中无法精确地表示分数1/10,这就像十进制无法精确的表示分数1/3一样。

所以如果数值计算中不允许有任何舍入误差,就应该使用BigDecimal类。

二进制系统中无法精确地表示分数1/10何解?

1/10换算成二进制为1/1010,结果无限循环的小数,所以二进制无法用有限的位数来表示0.1.

二进制能用有限的位数表示的一些数,比如0.5, 0.25等。

0.5, 0.25换算成二进制为101/1010,11001/1100100,所以二进制能用有限的位数来表示0.5, 0.25等。

十进制无法精确的表示分数1/3同理。

PS:float同样存在这个问题

使用BigDecimal类解决

GkOfSA.png

相关文章

  • Double类型运算的精度问题

    浮点数值不适用于无法接受舍入误差的计算中。 舍入误差的主要原因在于浮点数值采用二进制系统表示,而二进制系统中无法精...

  • double运算精度变化问题

    double运算后,精度变化导致数值不相等 使用包装类型BigDecimal 发现将double直接包装会直接导致...

  • BigDecimal类

    BigDecimal类概述由于在运算的时候,float类型和double很容易丢失精度,在金融、银行等对数值精度要...

  • 浮点类型解析

    一、类型定义浮点类型有float、double、long double类型,即单精度、双精度、长双精度,一般情况下...

  • Java基础知识总结

    BigDecimal类:由于在运算的时候,float类型和double类型很容易丢失精度,所以为了能精确的表示,计...

  • Android面试知识点总结(八)

    double相加会出现什么问题? double 进行运算时,经常出现精度丢失的问题。比如: 得到结果为43.190...

  • 关于Java中double类型的运算精度问题

    Java中Double保留后小数位的几种方法 返回double型的 1.能四舍五入 BigDecimal.ROUN...

  • iOS 浮点数的精确计算和四舍五入问题

    iOS开发中,使用浮点数(float,double)类型运算需要注意计算精度的问题。即使只是两位小数,也会出现误差...

  • 关于double类型精度问题

    今日写项目的时候遇到一个金额计算的问题,后台数据返回的价格是8.245,但是使用double类型接收的时候会解析成...

  • 常见对象BigDecimal的概述

    BigDecimal的概述 由于在运算的时候,float类型和double很容易丢失精度,所以为了能精确表示,计算...

网友评论

      本文标题:Double类型运算的精度问题

      本文链接:https://www.haomeiwen.com/subject/wntmuhtx.html