如何在Python中索引浮点值?

时间:2014-09-18 17:43:29

标签: python indexing

只是寻找一个问题的答案,没有任何谷歌搜索似乎可以解决。

如果..

a = 1.23

我希望能够取1并乘以这个数字但保留.23

这怎么可能?

提前致谢!

4 个答案:

答案 0 :(得分:2)

在对munkhd回答的评论中你说:

  

我希望能够将值输入为小时,然后将其转换为分钟。   所以,如果是1.20,我会将1乘以60,然后加20。   我确定必须有一个更简单的方法:)

因此,您的程序将收到1.20作为字符串。所以你可以在它上面使用字符串方法,例如

>>> dotted_time = '1.20'
>>> h, m = [int(s) for s in dotted_time.split('.')]
>>> print h, m
1 20
>>> minutes = 60*h + m
>>> hours = minutes / 60.0
>>> print minutes, hours
80 1.33333333333

或者,您可以colon_time = dotted_time.replace('.', ':'); colon_time采用标准时间函数可以理解和操作的格式。这可能是更明智的继续进行方式,如果你想用'1.20.30'来处理时间,.replace('.', ':')将转换为'1:20:30',它将很容易处理。

答案 1 :(得分:0)

int()您正在寻找的是什么:

In [39]: a = 1.23

In [40]: int(a)
Out[40]: 1

In [41]: a
Out[41]: 1.23

答案 2 :(得分:0)

您不能将浮动索引为此索引。它不是一个集合。有关浮点数如何工作的更多信息,请阅读http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html

数学库为您提供了一种方法,通过

来获取包含数字两部分的元组
>>> import math
>>> a = 1.23
>>> math.modf(a)
(0.22999999999999998, 1.0)

由于表示浮点数的方式,这不是exacct,但值大约为1e-17。

当然,这也总是可能的......

>>> map(int, str(a).split('.'))
[1, 23]

答案 3 :(得分:0)

除了PM 2Ring's answer似乎解决 [1] 你的实际问题,你可以"索引浮点数",当然在将其转换为字符串后,但要注意精度有限。因此,使用内置的round函数来定义解决方案所需的准确度:

s = str(round(a, 2)) # round a to two digits

现在,您可以应用所需的所有字符串函数。之后,您可能需要将结果转换回floatint ...


[1] 其他人已经提出过这样的建议:在 python 等高级语言中处理 time 等常见模型时,期望得到reliable solutions that are already there的支持。