比较Python中的浮点数
创始人
2024-12-15 02:00:05
0

在Python中,使用“==”操作符来比较两个浮点数是不可靠的,因为浮点数在计算机内部是以二进制形式表示的,而二进制表示并不能完美地表示分数值。因此,即使两个看似相等的浮点数,在计算机内部表示时,也可能会存在微小的精度误差,导致它们在逐个比较时并不能完全相等。

因此,在比较浮点数时,建议使用一个“容差范围”来判断它们是否“足够接近”(即是否两个浮点数差的绝对值小于等于某个给定的阈值)而不是直接使用“==”操作符。

以下是一个例子,其中定义一个函数near(),来判断两个浮点数是否足够接近:

def near(a, b, rtol=1e-5, atol=1e-8):
    """
    Compare two floats with some tolerance.

    rtol (relative tolerance) specifies the relative tolerance (as a percentage) between a and b
    atol (absolute tolerance) specifies the absolute tolerance between a and b

    Returns True if |a-b| <= (atol + rtol*|b|) for b != 0
    Returns True if |a-b| <= atol for b = 0
    Returns False otherwise
    """
    if a == b:  # Short-circuit exact equality
        return True
    elif b == 0:  # Avoid div by zero
        return abs(a) <= atol
    else:
        return abs(a - b) <= (atol + rtol * abs(b))


a = 0.1 + 0.2
b = 0.3

if near(a, b):
    print(f"{a} is approximately equal to {b}")
else:
    print(f"{a} is not approximately equal to {b}")

在上述代码中,变

相关内容

热门资讯

最新技巧!中至打炸怎么让系统分... 最新技巧!中至打炸怎么让系统分好牌(辅助挂)都是是有挂(2020已更新)(哔哩哔哩)1、游戏颠覆性的...
微扑克ai机器人!微扑克软件发... 微扑克ai机器人!微扑克软件发牌管理,微扑克可以加入俱乐部(真是有挂);微扑克ai机器人!微扑克软件...
一分钟秒懂!老友麻将有挂吗(辅... 一分钟秒懂!老友麻将有挂吗(辅助)好像有挂(2020已更新)(哔哩哔哩)1、每一步都需要思考,不同水...
微扑克游戏辅助器!微扑克专用辅... 自定义微扑克系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑克专用辅助器,不管你是想分享...
实用技巧!wepoke软件透明... We辅poker助赢率提升策略‌;实用技巧!wepoke软件透明挂可以弄(wepokeai机器人)W...
玩家必看秘籍!武汉麻将助赢神器... 玩家必看秘籍!武汉麻将助赢神器(透视)本来存在有挂(2021已更新)(哔哩哔哩)所有人都在同一条线上...
微扑克系统发牌规律!微扑克可以... 1、微扑克系统发牌规律!微扑克可以在软件内设置,微扑克其实存在有挂,软件教程(有挂软件);详细教程。...
wepoke透明挂黑科技!wo... wepoke透明挂黑科技!wopoker辅助器免费版v2.0(辅助透视)wepOke(一贯真的有挂)...
大家学习交流!丽水茶苑有外 挂... 大家学习交流!丽水茶苑有外 挂是真的吗(辅助)总是有挂(2023已更新)(哔哩哔哩)1、丽水茶苑有外...
微扑克辅助器ios!微扑克辅助... 微扑克辅助器ios!微扑克辅助器是真的,微扑克软件的规律(切实有挂辅助挂)1、每一步都需要思考,不同...