如何获取数字的小数部分?
例如,我有一个浮点数列表
num = [12.73, 9.45]
,并且只想获取小数点后的数字,在本例中为 73
和 45
。我该怎么做呢?
一种方法是使用纯数学。
num = [12.73, 9.45]
[int((f % 1) * 100) for f in num]
>>> [73, 44]
整个除法完成后,模运算符返回余数(过度简化)。
因此,返回十进制值;数字的小数部分。
12.73 % 1
>>> 0.7300000000000004
要将十进制值获取为整数,您可以使用:
int((12.73 % 1) * 100)
>>> 73
解决有关负数的评论,可以在模运算之前导出绝对值。例如:
int((abs(-12.73) % 1) * 100)
>>> 73
只需将其包装在一个循环中以获取所有必需的值......然后您就得到了上面的“简短答案”。
num = [12.73, 9.45];
result = list(map(lambda x: int(str(x).split('.')[1]),num))
print(result)
并且只想获取句点之后的数字,
不存在这样的事情。数字没有数字;数字的字符串表示形式具有数字。即便如此,浮点数也不精确;您可能会在一种情况下显示 0.3
,而在另一种情况下显示
0.30000000000000004
,具有相同的值。
听起来你实际上想要的是数字的小数部分。有很多方法可以做到这一点,但它们都归结为相同的想法:这是输入(作为浮点数)除以 1 时的结果。
对于单个值,它看起来像:
fractional_part = value % 1.0
或
# This built-in function performs the division and gives you
# both quotient and remainder.
integer_part, fractional_part = divmod(value, 1.0)
或
import math
fractional_part = math.fmod(value, 1.0)
或
import math
# This function is provided as a special case.
# It also gives you the integer part.
# Notice that the results are the other way around vs. divmod!
fractional_part, integer_part = math.modf(value)
要以相同的方式处理列表中的每个值,请使用 列表理解。