Python中的十进制函数是什么?
对于十进制浮点算法,Python提供了decimal模块。这个模块本身有数百个函数,可以帮助高效地处理十进制计算。在这个主题中,我们将介绍重要的和最广泛使用的一些函数。
更多Python相关文章,请阅读:Python 教程
compare()
这个函数比较十进制数。如果第一个十进制参数大于第二个,则返回1;如果第一个十进制参数小于第二个,则返回-1;如果两个参数相等,则返回0。
示例
import decimal
val1 = decimal.Decimal(2.6)
val2 = decimal.Decimal(2.61)
#比较十进制数
print("结果是:",val1.compare(val2))
#重置数值
val1 = decimal.Decimal(2.6)
val2 = decimal.Decimal(-2.6)
#比较十进制数
print("结果是:",val1.compare(val2))
#重置数值
val1 = decimal.Decimal(2.6)
val2 = decimal.Decimal(2.6)
#比较十进制数
print("结果是:",val1.compare(val2))
输出
运行上述代码将给出以下结果−
结果是:-1
结果是:1
结果是:0
max()和min()
它们分别找出两个十进制数的最大值和最小值。
示例
import decimal
val1 = decimal.Decimal(2.6)
val2 = decimal.Decimal(2.61)
#比较十进制数
print("最大值是:",round(val1.max(val2),2))
print("最小值是:",round(val1.min(val2),2))
输出
运行上述代码将给出以下结果−
最大值是:2.61
最小值是:2.60
getcontext()
我们可以使用这个方法改变算术运算的精度。默认精度为28。在下面的例子中,我们进行了一个算术运算,其结果按照getcontext().prec设置的精度显示。
示例
from decimal import *
print(Decimal(13) / Decimal(7))
getcontext().prec = 6
print(Decimal(13) / Decimal(7))
getcontext().prec = 10
print(Decimal(13) / Decimal(7))
输出
运行上述代码将给出以下结果−
1.857142857142857142857142857
1.85714
1.857142857
exp()
返回给定数字的(自然)指数函数e**x的值。
示例
from decimal import *
#查找e
print(Decimal(1).exp())
#查找e的平方
print(Decimal(2).exp())
#查找e的4次方
print(Decimal(4).exp())
输出
运行上述代码将给出以下结果−
2.718281828459045235360287471
7.389056098930650227230427461
54.59815003314423907811026120
as_integer_ratio()
有时候我们需要整数,其除法给我们的小数保留到给定的十进制位数。我们可以通过使用as_integer_ratio()来获得这个值。
示例
from decimal import*
v = Decimal('2.1834').as_integer_ratio()
print(v)
v = Decimal('-1.92').as_integer_ratio()
print(v)
输出
运行上述代码将给出以下结果−
(10917, 5000)
(-48, 25)
ln()和log10()
我们可以使用这些函数计算自然对数(以e为底)以及基于10的对数。我们提供需要获取对数的十进制值。
示例
from decimal import *
ln_val = Decimal('2.1').ln()
print(ln_val)
log_val = Decimal('2.1').log10()
print(log_val)
输出
运行上述代码将给出以下结果−
0.7419373447293773124826065257
0.3222192947339192680072441618
fma(a,b)
这是一个被称为fused multiply and add的特殊函数。输入的小数将与第一个参数a相乘,然后将结果加到第二个参数b上。
示例
from decimal import *
# 与(2.1*2)+5相同
fma_val = Decimal(2.1).fma(2,5)
print(fma_val)
# 与(8.1*3)+5相同
fma_val = Decimal(8.1).fma(3,5)
print(fma_val)
re class="prettyprint notranslate" >
输出
运行上述代码将给出以下结果 −
9.200000000000000177635683940
29.29999999999999893418589636