【问题标题】:Remove decimal places to certain digits without rounding [duplicate]删除某些数字的小数位而不四舍五入[重复]
【发布时间】:2013-06-23 19:58:11
【问题描述】:

我找到了十几个答案,但没有一个是我要找的,我不想向上或向下四舍五入,我知道我可以将数字四舍五入如下:

>>> print('%.3f' % 15.555555)
15.556

>>> round(15.555555, 3)
15.666

但我需要得到 15.555。我应该使用正则表达式吗?

【问题讨论】:

  • 是的,非常感谢我应该删除我的帖子吗?

标签: python


【解决方案1】:

厚颜无耻的解决方案:

numstring = str(15.555555)
num = float(numstring[:numstring.find('.')+4])

【讨论】:

    【解决方案2】:

    我的解决方案涉及int 滥用。 int 向最接近的 0 舍入。我将其乘以 10**3 以影响舍入。使用int后,除以10**3得到实际结果。

    它更安全,因为它可以使用e 表示法。

    int(15.55555 * 10**3) / 10.0**3
    

    【讨论】:

    • int(15.55555 * 10**3) / 10.0**3
    • @dansalmo:谢谢,确实更好,因为它适用于负数。为什么我忘记了int,我不确定。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-11
    相关资源
    最近更新 更多