Floating point 乘浮精度

Floating point 乘浮精度,floating-point,double,precision,Floating Point,Double,Precision,在浮点和双精度上执行运算(如乘法、除法、加法和减法)是否保持其精度 例如,如果我将1000个浮点数相乘(或除、加、减),我还会保持7位数的精度吗 我在这个网站上读到精度保持不变(),但我想再次检查。。浮点的精度始终相同。但计算的准确性取决于各种具体实现细节 例如,如果每次计算都会引入半个LSB的误差,那么在1000次计算之后,结果可能会偏离500个LSB。因此,尽管答案精确到7位,但它只能精确到4位 答案取决于你所说的“保持精度”是什么意思。单个浮点数的“精度”通常为7位左右(由于二进制存储的原

在浮点和双精度上执行运算(如乘法、除法、加法和减法)是否保持其精度

例如,如果我将1000个浮点数相乘(或除、加、减),我还会保持7位数的精度吗

我在这个网站上读到精度保持不变(),但我想再次检查。

浮点
的精度始终相同。但计算的准确性取决于各种具体实现细节


例如,如果每次计算都会引入半个LSB的误差,那么在1000次计算之后,结果可能会偏离500个LSB。因此,尽管答案精确到7位,但它只能精确到4位

答案取决于你所说的“保持精度”是什么意思。单个浮点数的“精度”通常为7位左右(由于二进制存储的原因,它不完全是7位)

有些计算可能会引入舍入误差,舍入误差会使最低有效位不正确,但这些误差可能会累加(如用户3386109在其答案中解释的那样)或被放大。放大的一个例子是,当
h
为零时,我计算
(f(x+h)-f(x))/h
形式的微积分极限。如果
f(x+0.0000001)
应该是3.1234567,但是我得到了3.1234566,
f(x)
给出了正确的3.1234568。现在,公式应该是
(3.1234567-3.1234568)/0.0000001
,也就是
-1
,但是我得到了
(3.1234566-3.1234568)/0.0000001
,也就是
-2

突然,我的最低有效位变成了我的最高有效位。还有其他放大舍入误差的方法和避免舍入误差的技巧


处理非整数类型时,请始终注意舍入错误

请检查此项,它将有助于提高您的内容质量乘/除的平均损失是sqrt(N)或约30位。谢谢!这就是我需要的!“在更糟糕的情况下,每次计算都会引入半个LSB的误差,因此在1000次计算后,您的结果可能会偏离500个LSB。”-考虑到“1个LSB”在每次计算中的数量不同等因素,这是一个相当误导性的说法。例如,
1e20+14-1e20
通常精确到0位,尽管只涉及两个操作的舍入误差。@user2357112很公平,我已经改写了该段。大数的微小差异问题确实是一个问题,但它与我试图阐明的累积小错误问题略有不同。最坏情况下的错误是一回事,错误概率密度是另一回事。有关乘法的情况,请参见