在Python2.6中,我发现sqrt(pi)的十进制等价值是
Decimal(pi).sqrt()有类似于罪恶,因为或其他(反)三角函数的东西吗?
文档只提到如何计算cos和sin。Decimal(pi).cos()不存在,from decimal import cos也不存在
Update:使用默认的三角函数的问题是,如果每次我想要计算的时候从浮点数和返回转换它们,那么它就不需要使用Decimal了。(在每一次计算中输入Decimal也很烦人,但我想我可以创建一个包装函数)
发布于 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才能完全精确地存储它。
我想@胡萝卜-托普的数学建议或一些数字算法(如泰勒级数近似)是你能得到的最好的。
发布于 2012-06-08 15:40:10
请参考这个。
http://docs.python.org/library/decimal.html#decimal-recipes
发布于 2012-06-08 18:25:33
十进制库的目的是支持适当的四舍五入的基数-10算术,主要用于财务计算时,需要精确控制四舍五入。它并不打算成为一个通用的任意精确库。
如果您需要一个通用的任意精度库,请查看模数学或gmpy2。
https://stackoverflow.com/questions/10951795
复制相似问题