gpt4 book ai didi

Python:索引 float ?

转载 作者:太空宇宙 更新时间:2023-11-04 11:00:41 25 4
gpt4 key购买 nike

我通过 Python 中的嵌套 for 循环读取了两组数据。我需要使用公共(public)数字(时间)来匹配两个不同文本文件的行。在这两个文件中,时间的写法不同(例如 21:53:28.339 与 121082008.3399)。我只需要时间的最后四位数字来匹配它们,例如从 21:53:28.339 开始,我只需要 '8.339'。在大多数情况下,将数字索引为字符串就可以正常工作(例如:timeList[nid][7:]),除了上面列出的数字等情况,其中 python 将 .3399 舍入为 .34。

有没有办法让数字保持浮点形式并从数据中选择未舍入的数字?

谢谢!

最佳答案

编辑 - 专门使用 Decimal - 完整示例

import decimal

def simplify(text):
# might be a : separated value
text = text.split(':')[-1]
# turn into decimal
number = decimal.Decimal(text)
# remove everything but the ones place and forwards
number = number - (number/10).quantize(1, rounding=decimal.ROUND_FLOOR) * 10
# truncate to the thousandths
return number.quantize(decimal.Decimal('.001'), rounding=decimal.ROUND_FLOOR)

a = '121082008.3399'
b = '21:53:28.339'

assert simplify(a) == simplify(b)
print simplify(a), '=', simplify(b)

斯科特,如果您使用字符串比较数字,那么您不需要任何 float ,也不会进行“舍入”。

'8.339' == '8.339'

或者,如果你有

a = '8.3399'
b = '8.339'

然后

a[:-1] == b

但是,如果您决定将它们作为“数字”使用,那么正如 Ignacio 指出的那样,您可以使用小数。

from decimal import Decimal
number_a = Decimal(a[:-1])
number_b = Decimal(b)

现在

number_a == number_b

希望对你有帮助

关于Python:索引 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5773286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com