在 Python 中计算 Float 的小数位数

目录

Get the number of digits after the decimal point in Python

  1. 在 Python 中计算 Float 的小数位数
  2. 计算 Python 中 Decimal 对象的小数位数
  3. 使用 split() 计算 Float 的小数位数
  4. 使用 re.sub() 计算 Float 的小数位数

在 Python 中计算 Float 的小数位数

获取小数点后的位数:

  1. 使用该类str()将数字转换为字符串。
  2. 使用字符串切片来反转字符串。
  3. 使用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].

我们为stepof指定了一个值-1来反转字符串。

最后一步是使用该str.find()方法获取期间的索引。

主程序
my_float = 3.14567 count_after_decimal = str(my_float)[::-1].find('.') print(count_after_decimal) # 👉️ 5
Python 索引是从零开始的,因此字符串中的第一个字符的索引为0,最后一个字符的索引为-1or 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,digitsexponent属性。

要获得小数点后的位数,我们必须更改值的符号
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']

列表中的第二个元素是小数部分。

Python 索引是从零开始的,因此列表中的第一项的索引为,最后一项的索引为 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).

The plus + 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.

额外资源

您可以通过查看以下教程来了解有关相关主题的更多信息: