目录
Get the number of digits after the decimal point in Python
- 在 Python 中计算 Float 的小数位数
- 计算 Python 中 Decimal 对象的小数位数
- 使用 split() 计算 Float 的小数位数
- 使用 re.sub() 计算 Float 的小数位数
在 Python 中计算 Float 的小数位数
获取小数点后的位数:
- 使用该类
str()
将数字转换为字符串。 - 使用字符串切片来反转字符串。
- 使用
str.find()
方法查找期间的索引。
my_float = 3.14567 # ✅ Count decimal places in a float count_after_decimal = str(my_float)[::-1].find('.') print(count_after_decimal) # 👉️ 5
该示例计算浮点数中小数点后的位数。
str()
将浮点数转换为字符串并使用字符串切片反转字符串。my_float = 3.14567 print(str(my_float)[::-1]) # 👉️ 76541.3
字符串切片的语法
是my_str[start:stop:step]
.
我们为step
of指定了一个值-1
来反转字符串。
最后一步是使用该str.find()
方法获取期间的索引。
my_float = 3.14567 count_after_decimal = str(my_float)[::-1].find('.') print(count_after_decimal) # 👉️ 5
0
,最后一个字符的索引为-1
or 。 len(my_str) - 1
由于索引是从零开始的,因此期间的索引等于数字中的小数位数。
请注意,在使用浮点数时,您可能会遇到意外的舍入问题。
my_float = 3.14567834 - 1.3123 print(my_float) # 👉️ 1.8333783399999999 count_after_decimal = str(my_float)[::-1].find('.') print(count_after_decimal) # 👉️ 16
计算 Python 中 Decimal 对象的小数位数
如果您使用该类,则可以使用exponent
该属性来获取小数点后的位数Decimal
。
from decimal import Decimal my_decimal = Decimal('3.14567') count_after_decimal = abs(my_decimal.as_tuple().exponent) print(count_after_decimal) # 👉️ 5
as_tuple
方法返回数字的命名元组表示。
my_decimal = Decimal('3.14567') print(my_decimal.as_tuple()) print(my_decimal.as_tuple().sign) # 👉️ 0 print(my_decimal.as_tuple().digits) # 👉️ (3, 1, 4, 5, 6, 7) print(my_decimal.as_tuple().exponent) # 👉️ -5
命名元组具有sign
,digits
和exponent
属性。
要获得小数点后的位数,我们必须更改值的符号
exponent
,因此我们将结果传递给函数abs()
。
from decimal import Decimal my_decimal = Decimal('3.14567') count_after_decimal = abs(my_decimal.as_tuple().exponent) print(count_after_decimal) # 👉️ 5
abs函数返回数字的绝对值。换句话说,如果数字是正数,则返回数字,如果数字是负数,则返回数字的负数。
print(abs(-50)) # 👉️ 50 print(abs(50)) # 👉️ 50
使用 split() 计算浮点数的小数位数
您还可以使用该split()
方法来计算浮点数的小数位数。
my_float = 3.14567 count_after_decimal = len(str(my_float).split('.')[1]) print(count_after_decimal) # 👉️ 5
我们使用str()类将浮点数转换为字符串,并根据句点拆分字符串。
my_float = 3.14567 print(str(my_float).split('.')) # 👉️ ['3', '14567']
列表中的第二个元素是小数部分。
0
-1
len(a_list) - 1
我们访问索引处的列表1
并使用该len()
函数获取小数位数。
len ()函数返回对象的长度(项目数)。
# 使用 re.sub() 计算浮点数的小数位数
您还可以使用该re.sub()
方法来计算浮点数中的小数位数。
import re my_float = 3.14567 count_after_decimal = len(re.sub(r'^\d+\.', '', str(my_float))) print(count_after_decimal) # 👉️ 5
The re.sub method
returns a new string that is obtained by replacing the occurrences of the
pattern with the provided replacement.
The first argument we passed to the method is a regular expression.
The \d
character matches the digits [0-9]
(and many other digit characters).
+
causes the regular expression to match 1 or more repetitions of the preceding character (the digit).We used a backslash to escape the period because periods have a special meaning
in regular expressions.
In its entirety, the regular expression matches one or more digits at the start
of the string followed by a period and removes the characters by replacing them
with an empty string.
The last step is to use the len()
function to count the number of digits after
the decimal.
额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: