首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为Python 2十进制而犯的罪?

为Python 2十进制而犯的罪?
EN

Stack Overflow用户
提问于 2012-06-08 15:31:23
回答 4查看 7K关注 0票数 3

在Python2.6中,我发现sqrt(pi)的十进制等价值是

代码语言:javascript
复制
Decimal(pi).sqrt()

有类似于罪恶,因为或其他(反)三角函数的东西吗?

文档只提到如何计算cossinDecimal(pi).cos()不存在,from decimal import cos也不存在

Update:使用默认的三角函数的问题是,如果每次我想要计算的时候从浮点数和返回转换它们,那么它就不需要使用Decimal了。(在每一次计算中输入Decimal也很烦人,但我想我可以创建一个包装函数)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-06-08 16:03:12

sin(a)和cos(a)的值是仅针对特定角度的有理数(参见链接 ),因此不能将sin(a)或cos(a)的值存储为小数而不丢失精度。这就违背了将sin和cos值转换为十进制的目的,并使内置函数返回sin和cos值为小数。

此外,不能将所有有理数存储为十进制而不丢失精度,因为python的小数是(-1)**_sign * _int * 10**_exp,因此有理数的除数必须为10才能完全精确地存储它。

我想@胡萝卜-托普的数学建议或一些数字算法(如泰勒级数近似)是你能得到的最好的。

票数 3
EN

Stack Overflow用户

发布于 2012-06-08 15:40:10

请参考这个。

http://docs.python.org/library/decimal.html#decimal-recipes

票数 6
EN

Stack Overflow用户

发布于 2012-06-08 18:25:33

十进制库的目的是支持适当的四舍五入的基数-10算术,主要用于财务计算时,需要精确控制四舍五入。它并不打算成为一个通用的任意精确库。

如果您需要一个通用的任意精度库,请查看模数学gmpy2

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10951795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档