Python中的十进制函数
在Python中,有一个名为Decimal的模块,用于执行一些与十进制浮点数相关的任务。此模块提供正确舍入的浮点运算。
首先,我们需要导入Decimal标准库模块才能使用它。
import decimal
在本节中,我们将了解Decimal模块的一些重要函数。
平方根函数sqrt()和指数函数exp()
sqrt()方法用于计算给定十进制类型对象的平方根。exp()方法返回给定x(作为十进制数)的e^x值。
示例代码
#Perform sqrt() and exp() methods import decimal my_dec = decimal.Decimal(25.36) print(my_dec) #Find Square Root of the decimal number print('Square Root is: ' + str(my_dec.sqrt())) #Find e^x for the decimal number print('e^x is: ' + str(my_dec.exp()))
输出
25.3599999999999994315658113919198513031005859375 Square Root is: 5.035871324805668565859161094 e^x is: 103206740212.7314661465187086
对数函数
Decimal模块中有一些对数函数。这里我们讨论其中的两个。第一个是ln()方法。此方法用于查找十进制数的自然对数。
另一个方法是log10()方法。此方法用于查找以10为底的对数值。
示例代码
#Perform ln() and log10() methods import decimal my_dec = decimal.Decimal(25.36) print(my_dec) #Find logarithmic value with base e print('ln(x) is: ' + str(my_dec.ln())) #Find logarithmic value with base 10 print('log(x) is: ' + str(my_dec.log10()))
输出
25.3599999999999994315658113919198513031005859375 ln(x) is: 3.233173129569025152000878282 log(x) is: 1.404149249209695070459909761
as_tuple()和fma()方法
as_tuple方法用于将十进制数表示为包含三个元素的元组。这些元素分别是符号、数字和指数值。在符号字段中,当数字为0时,表示十进制数为正数;当数字为1时,表示负数。
fma()方法称为融合乘加。如果我们使用fma(x, y),它将计算(number * x) + y。在这种情况下,(number * x)部分不会被舍入。
示例代码
#Perform as_tuple() and fma() methods import decimal my_dec1 = decimal.Decimal(5.3) print(my_dec1) my_dec2 = decimal.Decimal(-9.23) print(my_dec2) #Show decimal as tuple print('\nmy_dec1 as tuple: ' + str(my_dec1.as_tuple())) print('\nmy_dec2 as tuple: ' + str(my_dec2.as_tuple())) #Perform Fused Multiply and Add print('\n(x*5)+8 is: ' + str(my_dec1.fma(5, 8)))
输出
5.29999999999999982236431605997495353221893310546875 -9.230000000000000426325641456060111522674560546875 my_dec1 as tuple: DecimalTuple(sign=0, digits=(5, 2, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 2, 2, 3, 6, 4, 3, 1, 6, 0, 5, 9, 9, 7, 4, 9, 5, 3, 5, 3, 2, 2, 1, 8, 9, 3, 3, 1, 0, 5, 4, 6, 8, 7, 5), exponent=-50) my_dec2 as tuple: DecimalTuple(sign=1, digits=(9, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 6, 3, 2, 5, 6, 4, 1, 4, 5, 6, 0, 6, 0, 1, 1, 1, 5, 2, 2, 6, 7, 4, 5, 6, 0, 5, 4, 6, 8, 7, 5), exponent=-48) (x*5)+8 is: 34.49999999999999911182158030
compare()方法
此compare方法用于比较两个十进制数。当数字相同时,它将返回0;否则,当第一个数字较大时,它将返回+1;当第一个参数较小时,它将返回-1。
示例代码
#Perform compare() method import decimal #Compare when both are equal print('Compare value: ' + str(decimal.Decimal(-5.3).compare(decimal.Decimal(-5.3)))) #Compare when first one is smaller print('Compare value: ' + str(decimal.Decimal(-5.3).compare(decimal.Decimal(9.26)))) #Compare when first one is greater print('Compare value: ' + str(decimal.Decimal(-5.3).compare(decimal.Decimal(-13.25))))
输出
Compare value: 0 Compare value: -1 Compare value: 1
一些复制函数
有一些不同的方法可以将十进制数复制到另一个十进制对象中。第一种方法是copy_abs()。它用于从十进制数中获取绝对值。第二种方法是copy_negate(),它用于在对实际数字取反后复制十进制数。第三个函数是copy_sign()。此方法通过从第二个参数获取符号来打印第一个参数。
示例代码
#Perform copy_abs(), copy_negate() and copy_sign() import decimal my_dec = decimal.Decimal(-25.36) print(my_dec) #copy the absolute value temp_dec = my_dec.copy_abs() print('Absolute is: ' + str(temp_dec)) #copy the negative value my_dec = decimal.Decimal(7.26) temp_dec = my_dec.copy_negate() print('Negate of 7.26 is: ' + str(temp_dec)) #copy the sign value from second argument to first one my_dec = decimal.Decimal(-25.36) temp_dec = my_dec.copy_sign(decimal.Decimal(12.5)) print('Copy sign from second argument: ' + str(temp_dec))
输出
-25.3599999999999994315658113919198513031005859375 Absolute is: 25.3599999999999994315658113919198513031005859375 Negate of 7.26 is: -7.2599999999999997868371792719699442386627197265625 Copy sign from second argument: 25.3599999999999994315658113919198513031005859375
max和min方法
max和min是两个简单的函数。它们分别用于查找两个数字之间的最大值或最小值。
示例代码
#Perform max() and min() methods import decimal my_dec1 = decimal.Decimal(5.3) print(my_dec1) my_dec2 = decimal.Decimal(-9.23) print(my_dec2) #Show Minimum and Maximum print('Minumum: ' + str(my_dec1.min(my_dec2))) print('Maximum: ' + str(my_dec2.max(my_dec1)))
输出
5.29999999999999982236431605997495353221893310546875 -9.230000000000000426325641456060111522674560546875 Minumum: -9.230000000000000426325641456 Maximum: 5.299999999999999822364316060
广告