目录
Split a number into integer and decimal parts in Python
在 Python 中将浮点数拆分为整数和小数部分
使用该math.modf()
方法将数字拆分为整数和小数部分。
该math.modf()
方法返回所提供数字的小数部分和整数部分。
import math my_num = 1.3588 result = math.modf(my_num) print(result) # 👉️ (0.3588, 1.0) print(result[0]) # 👉️ 0.3588 print(result[1]) # 👉️ 1.0
您还可以使用解包
将小数部分和整数部分分配给变量。
import math my_num = 1.3588 dec, integer = math.modf(my_num) print(dec) # 👉️ 0.3588 print(integer) # 👉️ 1.0
我们使用该math.modf()
方法将数字拆分为整数和小数部分。
math.modf方法返回所提供数字的小数部分和整数部分。
小数部分和整数部分都是float类型
小数部分和整数部分带有所提供数字的符号并且是浮点数。
import math my_num = -1.3588 result = math.modf(my_num) print(result) # 👉️ (-0.3588, -1.0) print(result[0]) # 👉️ -0.3588 print(result[1]) # 👉️ -1.0 # ----------------------------------------- # ✅ unpack decimal and integer values dec, integer = result print(dec) # 👉️ -0.3588 print(integer) # 👉️ -1.0
请注意, 中的两个值tuple
都是浮点数。
拆分后将整数部分转换为int
如果需要
将第二个元组元素转换为整数,请使用 int()
类。
import math my_num = 1.3588 result = math.modf(my_num) print(result) # 👉️ (0.3588, 1.0) dec = result[0] print(dec) # 👉️ 0.3588 integer = int(result[1]) print(integer) # 👉️ 1
或者,您可以使用%
operator 和
floor division //
。
使用模运算符将数字拆分为整数和小数部分
这是一个两步过程:
- 使用 floor division 通过除以得到数字的整数部分
1
,例如num // 1
。 - 使用取模
%
运算符通过除以 后的余数来获取小数部分1
,例如num % 1
。
my_num = -1.3588 dec = my_num % 1 print(dec) # 👉️ 0.3588 integer = my_num // 1 print(integer) # 👉️ 1.0
取模(%)
运算符返回第一个值除以第二个值的余数。
当我们使用模运算符将一个数除以 时1
,余数就是小数部分。
print(1.3588 % 1) # 👉️ 0.3588
您可以使用 floor 除法来获取数字的整数部分。
my_num = -1.3588 integer = my_num // 1 print(integer) # 👉️ 1.0 dec = my_num % 1 print(dec) # 👉️ 0.3588
//
数学除法。floor()
将数字除以1
并向下舍入,得到数字的整数部分。
my_num = -1.3588 dec = my_num % 1 print(dec) # 👉️ 0.6412 integer = my_num // 1 print(integer) # 👉️ -2.0
如果您必须处理负数,请改用该math.modf()
方法。
# 将数字拆分为整数和小数部分divmod
您可能还会在网上看到使用该divmod()
函数的示例。
但是,请注意,它divmod()
也不会以您期望的方式处理负数。
my_num = 1.3588 result = divmod(my_num, 1) print(result) # 👉️ (1.0, 0.3588) integer = int(result[0]) print(integer) # 👉️ 1 dec = result[1] print(dec) # 👉️ 0.3588
divmod函数接受两个数字并返回一个包含 2 个值的元组:
- 第一个参数除以第二个参数的结果。
- 第一个参数除以第二个参数的余数。
但是,该divmod()
函数也不会以适合我们用例的方式处理负数。
my_num = -1.3588 result = divmod(my_num, 1) print(result) # 👉️ (-2.0, 0.6412) integer = int(result[0]) print(integer) # 👉️ -2 dec = result[1] print(dec) # 👉️ 0.6412
For this reason, you should use the math.modf()
method when you have to split
a number into integer and decimal parts.
# Subtracting integers from floats and accuracy
You can also split a floating-point number to an integer by:
- Converting the float to an integer (to drop the decimal).
- Subtracting the integer from the float to get the decimal part.
a_float = 1.03588 integer = int(a_float) print(integer) # 👉️ 1 dec = a_float - integer print(dec) # 👉️ 0.03587999999999991
However, notice that you might get surprising results when subtracting from a
floating-point number.
The resulting number cannot be represented in binary, so the precision is lost.
This might or might not suit your use case.
I’ve also written an article on
how to split an integer into digits.
# Additional Resources
You can learn more about the related topics by checking out the following
tutorials: