栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何避免浮点错误?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何避免浮点错误?

这实际上与Python无关-
使用硬件的二进制浮点算法,您会在任何语言中看到相同的行为。首先阅读文档。

阅读完这些内容后,您将更好地理解,您 没有 在代码中添加百分之一。这正是您要添加的内容:

>>> from decimal import Decimal>>> Decimal(.01)Decimal('0.01000000000000000020816681711721685132943093776702880859375')

该字符串显示二进制浮点数的精确十进制值(C中的“双精度”),精确到十进制值0.01。您真正添加的东西比1/100大。

控制浮点数值错误是一个称为“数值分析”的字段,它是一个非常大而复杂的主题。只要您对浮点数仅是十进制值的近似值感到震惊,请使用该

decimal
模块。这将为您消除一个“浅”问题的世界。例如,对您的函数进行以下小的修改:

from decimal import Decimal as Ddef sqrt(num):    root = D(0)    while root * root < num:        root += D("0.01")    return root

然后:

>>> sqrt(4)Decimal('2.00')>>> sqrt(9)Decimal('3.00')

它并不是真的更准确,但是在简单的示例中可能并不那么令人惊讶,因为现在它 正好 增加 一百分之一。

另一种选择是坚持使用浮点数,然后添加一些
精确表示为二进制浮点数的值:form的值

I/2**J
。例如,代替添加0.01,而添加0.125(1/8)或0.0625(1/16)。

然后查找“牛顿法”以计算平方根;-)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/652391.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号