相关疑难解决方法(0)

为什么浮点数不准确?

为什么有些数字在存储为浮点数时会失去准确性?

例如,十进制数9.2可以精确地表示为两个十进制整数(92/10)的比率,两者都可以用二进制(0b1011100/0b1010)精确表示.但是,存储为浮点数的相同比率永远不会完全等于9.2:

32-bit "single precision" float: 9.19999980926513671875
64-bit "double precision" float: 9.199999999999999289457264239899814128875732421875
Run Code Online (Sandbox Code Playgroud)

这样一个看似简单的数字如何在64位内存中表达"太大" ?

language-agnostic floating-point precision

181
推荐指数
4
解决办法
3万
查看次数

Python float - str - float怪异

>>> float(str(0.65000000000000002))

0.65000000000000002

>>> float(str(0.47000000000000003))

0.46999999999999997     ???
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?如何转换0.47000000000000003为字符串并将结果值恢复为浮点数?

我在Windows上使用Python 2.5.4.

python string floating-point floating-accuracy ieee-754

10
推荐指数
1
解决办法
6068
查看次数

c#:两个双数问题的总和

可能重复:
为什么C#中的浮点运算不精确?

你好.我有以下问题:

43.65+61.11=104.75999999999999
Run Code Online (Sandbox Code Playgroud)

对于十进制是正确的:

(decimal)43.65+(decimal)61.11=104.76
Run Code Online (Sandbox Code Playgroud)

为什么双重结果是错误的?

c# double decimal

7
推荐指数
1
解决办法
2万
查看次数

为什么不到!int()正常工作?

为什么这个断言失败了?

import std.conv;

void main()
{
    auto y = 0.6, delta=0.1;
    auto r = to!int(y/delta);
    assert(r == 6);
}
Run Code Online (Sandbox Code Playgroud)

r的值应该是6而它是5,为什么?

d floating-accuracy floating-point-precision

5
推荐指数
1
解决办法
121
查看次数