Python:索引 float ?

标签 python string floating-point indexing

我通过 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/

相关文章:

jQuery double /浮点输入验证

python - GIMP 插件错误 "ImportError: No module named gimpfu"

python - PyCharm 无法正确创建 Django 项目

python - 理解什么样的对象可以是字典键

python - 如何将 "\u5c0f\u738b\u5b50\u003a\u6c49\u6cd5\u82f1\u5bf9\u7167"之类的字符串转换为汉字

Java 字符串正则表达式替换方法从替换中删除反斜杠

javascript - 从字符串开头删除非数字字符的最佳方法是什么?

python - sort_by 在 pandas >= 0.18.0 中损坏?

SQLite - float 粒度打破唯一约束?

c# - 如何使用 C# decimal 计算子数组总和的百分比,使它们的总和严格为 100