接单日记:理解浮点数运算的误差

Posted A-L-Kun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接单日记:理解浮点数运算的误差相关的知识,希望对你有一定的参考价值。

接单日记(一):理解浮点数运算的误差

此为一个实验报告,故遵守实验报告的格式。

一、 实验目的

  1. 理解python中的浮点数计算存在的一个误差问题
  2. 理解这种误差对程序带来的危害
  3. 理解如何解决程序产生的误差

二、 实验内容

用Python程序判断0.3 – 0.2的值是否为0.1,如果不是0.1,那么,如何让这个值是0.1呢?

三、 程序及结果

from decimal import Decimal
# 进行误差的判断
value = 0.3 - 0.2
print(value == 0.1)  # 输出:False

# 消除误差的方法:使用 Decimal 库进行精确运算
value_new = float(Decimal("0.3") - Decimal("0.2"))
print(value_new == 0.1)  # 输出:True

C++浮点数误差是啥

各路大神,请问浮点数误差是什么意思啊,是说比如0.00000013与0.00000014在存储时都存为0.0000001这种意思吗。表示完成不理解。还有怎么判断两个浮点数是否相等。
..

float类型是不精确类型,0.1的就不能用二进制表示出来;即float类型只能由x*2^y表达出的有理数进行编码,1/3,1/5....都不能表达,0.1被定义成了一个近似0.1的数,采用舍入法(由于计算机的浮点存储是有限的);

在C里比较浮点数操作是将两个数的差<0.0000001;或者更小的数来取得两个浮点数相等
参考技术A 严格来说,应该是科学计数法的有效数字位数问题,理论值可能有很多位有效数字,但存储为浮点数时,单精度只有7到8位有效数字,后面的被截断,从而产生误差。科学计算一般采用双精度,有效数字位数可达到13位左右。
判断两个浮点数是否相等时,不能按直接相等判断,一般情况下都是判断两个数的差的绝对值是否小于某个给定的小数(相等于给定一个精度),如单精度取0.0001或更小

以上是关于接单日记:理解浮点数运算的误差的主要内容,如果未能解决你的问题,请参考以下文章

接单日记SMTP发送邮件

javascript 浮点数运算误差检查函数

js浮点数运算出现误差解决方案

js浮点数精度误差问题,解决方法

C++浮点数误差是啥

4-浮点数运算