如何返回数字的小数部分? [已关闭]

问题描述 投票:0回答:3

如何获取数字的小数部分?

例如,我有一个浮点数列表

num = [12.73, 9.45]
,并且只想获取小数点后的数字,在本例中为
73
45
。我该怎么做呢?

python python-3.x
3个回答
5
投票

一种方法是使用纯数学。

简短的回答:

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

只需将其包装在一个循环中以获取所有必需的值......然后您就得到了上面的“简短答案”。


3
投票
num = [12.73, 9.45];
result = list(map(lambda x: int(str(x).split('.')[1]),num))
print(result)

2
投票

并且只想获取句点之后的数字,

不存在这样的事情。数字没有数字;数字的字符串表示形式具有数字。即便如此,浮点数也不精确;您可能会在一种情况下显示 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)
要以相同的方式处理列表中的每个值,请使用 

列表理解

© www.soinside.com 2019 - 2024. All rights reserved.