当前位置: 首页 > 面试题库 >

小数模块中的有效数字

裴嘉良
2023-03-14
问题内容

因此,我决定尝试编写一些python脚本来解决我的问题,从而解决物理作业。我遇到的一个问题是,重要的数字似乎并不总是正确地出现。例如,这可以正确处理重要数字:

from decimal import Decimal
>>> Decimal('1.0') + Decimal('2.0')
Decimal("3.0")

但这不是:

>>> Decimal('1.00') / Decimal('3.00')
Decimal("0.3333333333333333333333333333")

有两个问题:

  1. 我对吗,这不是有效位数的期望值,还是我需要复习有效位数的数学运算?
  2. 有什么方法可以不必手动设置小数精度吗?当然,我确定我可以使用numpy来执行此操作,但是我只是想知道是否有一种方法可以出于好奇而使用十进制模块来执行此操作。

问题答案:

将小数位工作精度更改为2位 不是 一个好主意,除非您绝对只打算执行一个操作。

您应始终以比重要性水平更高的精度执行计算,并且仅舍入最终结果。如果执行长序列的计算并在每一步四舍五入到有效位数,则会累积错误。十进制模块不知道任何特定的操作是长序列中的一个还是最终结果,因此它假定它的舍入不应超过必要的范围。理想情况下,它将使用无限精度,但这太昂贵了,因此Python开发人员只能使用28位数字。

获得最终结果后,可能需要量化:

>>>(Decimal('1.00')/ Decimal('3.00'))。quantize(Decimal(“ 0.001”))
小数(“ 0.333”)

您必须手动跟踪重要性。如果要进行自动重要性跟踪,则应使用间隔算法。有一些适用于Python的库,包括pyinterval和mpmath(支持任意精度)。用十进制库实现区间算术也很简单,因为它支持定向舍入。

您可能还需要阅读小数算法常见问题解答:小数算法是“重要性”算术吗?



 类似资料:
  • 我试图保存熊猫数据框的内容到Excel文件在windows/azure数据库 df=pd。数据帧({'Data':[10,20,30,20,15,30,45]}) 作者=pd.ExcelWriter('pandas_simple.xlsx',引擎='xlsxWriter') df。到excel(编写器,工作表\u name='Sheet1') 作家保存() 错误 ModuleNotFoundErr

  • 试图使一个chrome扩展刮一个网站,但它总是在内容完全加载之前(在manifest.json的文档读取后尝试) 每次有人叫我: 还尝试:

  • 我不是本地JAVA程序员。我正在为web服务API创建一个客户端。API基本上需要一个数组参数。 我正在解析一个XML文件,创建记录,然后使用此API进行批量插入。 问题是这个API一次只能插入200条记录,这意味着我的数组在调用时只能有200条或更少的记录。 由于我不知道预先有多少条记录,所以我将我的记录存储在ArrayList中,然后使用将其转换为Array。ToArray() 现在,由于AP

  • 问题内容: 我花了一些时间想知道是否有可能编写一个guice模块,该模块本身使用类型T进行参数化,并使用其type参数指定绑定。 像在此示例(不起作用)中那样: 我尝试了不同的方法,试图将T作为类/ TypeLiteral的实例传递给MyModule,但没有一个起作用。帮助表示赞赏。 问候,zukasz Osipiuk 问题答案: 为此,您将必须使用从头开始构建每个TypeLiteral 。您可以

  • 我正在做一些非常简单的测试,关于使用csvtojson节点模块将csv文件读取为json格式,我使用下面的代码作为模板 我主要关注的是 //异步/等待使用 const jsonArray=wait csv()。fromFile(csvFilePath); 代码的部分。这是我的密码 无论我用哪种方法尝试,我总是会出现以下错误 或 如果我把代码转换成顶级的 我不明白这为什么不起作用。 编辑:我做了@t

  • 问题内容: 我试图弄清楚如何在C扩展模块中具有一个函数的变量(也许有很多)参数。 阅读有关PyArg_ParseTuple的内容,您似乎必须知道要接受多少,一些强制性的和一些可选的,但都具有自己的变量。我希望PyArg_UnpackTuple能够处理此问题,但是当我尝试以似乎错误的方式使用它时,它似乎只会给我总线错误。 举个例子,将以下可能要放入扩展模块中的python代码(用C语言编写)。 这可