只是寻找一个问题的答案,没有任何谷歌搜索似乎可以解决。
如果..
a = 1.23
我希望能够取1并乘以这个数字但保留.23
这怎么可能?
提前致谢!
答案 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
现在,您可以应用所需的所有字符串函数。之后,您可能需要将结果转换回float
或int
...
[1] 其他人已经提出过这样的建议:在 python 等高级语言中处理 time 等常见模型时,期望得到reliable solutions that are already there的支持。