那里!math是一個 python 模塊,許多人使用它來做一些更高級的數學函式&使用該decimal模塊,可以正確計算東西1.2-1.1=0.0999~,但使用decimal它的型別0.1。
我的問題是這兩個模塊不能很好地相互配合。例如log(1000, 10)=2.9999~,但使用decimal型別會給出相同的結果。我怎樣才能讓這兩者相互合作?我需要實作自己的功能嗎?沒有辦法嗎?
uj5u.com熱心網友回復:
您有Decimal.log10,Decimal.ln和Decimal.logb每個Decimal實體的方法,還有更多(max, sqrt):
from decimal import Decimal
print(Decimal('0.001').log10())
# Decimal('-3')
print(Decimal('0.001').ln())
# Decimal('-6.907755278982137052053974364')
但是,沒有三角函式。
用于任意精度計算的更高級替代方法是mpmath,可在 PyPI 獲得。當然,它不會為您提供sinor tan,因為sin(x)對于許多值來說是不合理的x,因此將其存盤為Decimal沒有意義。mpmath但是,給定固定精度,您可以在幫助下通過 Tailor 系列等計算這些函式。你也可以Decimal(math.sin(0.17))得到一些小數,保持接近 0.17 弧度的正弦值。
另請參閱官方 Decimal 食譜。
uj5u.com熱心網友回復:
Decimal 中有一個 log10 方法。
from decimal import *
a = Decimal('1000')
print(a.log10())
但是,如果您嘗試使用精確整數解法求解對數,則使用計算對數精確值的函式對我來說更有意義。通常預計對數在典型用法中會輸出一些不合理的結果。這可以使用 for 回圈和重復除法來完成。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/515356.html
標籤:Python数学十进制
下一篇:碰撞后如何找到球軌跡點的變化點
