相关疑难解决方法(0)

浮点数学是否破碎?

请考虑以下代码:

0.1 + 0.2 == 0.3  ->  false
Run Code Online (Sandbox Code Playgroud)
0.1 + 0.2         ->  0.30000000000000004
Run Code Online (Sandbox Code Playgroud)

为什么会出现这些不准确之处?

language-agnostic math floating-point floating-accuracy

2798
推荐指数
28
解决办法
28万
查看次数

浮点是如何存储的?什么时候重要?

在对这个问题的跟进中,似乎有些数字根本不能用浮点表示,而是近似的.

如何存储浮点数?

是否有不同尺寸的通用标准?

如果我使用浮点,我需要注意什么样的问题?

它们是否是跨语言兼容的(即,我需要处理哪些转换才能通过TCP/IP将python程序中的浮点数发送到C程序)?

-亚当

floating-point rounding-error

36
推荐指数
4
解决办法
2万
查看次数

为什么“0.2 + 0.1”显示为“0.30000000000000004”?

我编写了以下代码来生成带浮点数的范围:

def drange(start, stop, step):
    result = []
    value = start
    while value <= stop:
        result.append(value)
        value += step
    return result
Run Code Online (Sandbox Code Playgroud)

使用此语句调用此函数时:

print drange(0.1,1.0,0.1)
Run Code Online (Sandbox Code Playgroud)

我希望得到这个:

[0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
Run Code Online (Sandbox Code Playgroud)

但我得到以下信息:

[0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6, 0.7, 0.7999999999999999, 0.8999999999999999, 0.9999999999999999]
Run Code Online (Sandbox Code Playgroud)

这是为什么?,我该如何解决?

python floating-point append decimal

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