对于十进制浮点算术,python提供了十进制模块。该模块本身具有数百个功能,可帮助有效处理十进制计算。我们将研究有关此主题的重要且使用最广泛的主题。
相比()
此函数比较十进制数字。如果1st Decimal参数大于2nd,则返回1;如果1st Decimal参数小于2nd,则返回-1;如果两者相等,则返回0。
示例import decimal
val1 = decimal.Decimal(2.6)
val2 = decimal.Decimal(2.61)
# compare decimals
print("The result is : ",val1.compare(val2))
# resetting the values
val1 = decimal.Decimal(2.6)
val2 = decimal.Decimal(-2.6)
# compare decimals
print("The result is : ",val1.compare(val2))
# resetting the values
val1 = decimal.Decimal(2.6)
val2 = decimal.Decimal(2.6)
# compare decimals
print("The result is : ",val1.compare(val2))
输出结果
运行上面的代码给我们以下结果-The result is : -1
The result is : 1
The result is : 0
max()和 min()
他们分别找到两个十进制数的最大值和最小值。
示例import decimal
val1 = decimal.Decimal(2.6)
val2 = decimal.Decimal(2.61)
# compare decimals
print("The max value is : ",round(val1.max(val2),2))
print("The min value is : ",round(val1.min(val2),2))
输出结果
运行上面的代码给我们以下结果-The max value is : 2.61
The min value is : 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 *
#Finding e
print(Decimal(1).exp())
#Finding e raised to 2
print(Decimal(2).exp())
#Finding e raised to 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)
这是一个特殊功能,称为融合乘法和加法。提供的小数乘以第一个参数a,然后将结果添加到第二个参数b。
示例from decimal import *
# Same as (2.1*2)+5
fma_val = Decimal(2.1).fma(2,5)
print(fma_val)
# Same as (8.1*3)+5
fma_val = Decimal(8.1).fma(3,5)
print(fma_val)
re class="prettyprint notranslate" >
输出结果
运行上面的代码给我们以下结果-9.200000000000000177635683940
29.29999999999999893418589636