【问题标题】:Getting only 1 decimal place [duplicate]仅获得小数点后一位[重复]
【发布时间】:2011-03-24 23:28:49
【问题描述】:

如何将45.34531 转换为45.3

【问题讨论】:

    标签: python rounding


    【解决方案1】:

    你是不是想用一个数字来表示它:

    print("{:.1f}".format(number)) # Python3
    print "%.1f" % number          # Python2
    

    或者实际上四舍五入其他小数位?

    round(number,1)
    

    甚至严格向下取整?

    math.floor(number*10)/10
    

    【讨论】:

    • 第一个和第三个解决方案是否有可能给出不同的结果?我认为它们都完全相同@relet
    • 尝试数字=-2.55。它们还返回不同的类型。
    • @DeveshSaini 尝试编号 2.36。第一个将给 2.4,第三个将给 2.3
    【解决方案2】:
    >>> "{:.1f}".format(45.34531)
    '45.3'
    

    或者使用内置的回合:

    >>> round(45.34531, 1)
    45.299999999999997
    

    【讨论】:

    • 更新:现在回合给我 45.3。
    • 这个答案是正确的,但格式是复杂的 IMO。你应该写"{:.1f}".format(45.34531)
    • @DaveHalter,写出0.1 而不是.1 太复杂了,任何人都可以遵循该代码...
    • 前面还有一个零,不是必须的。我也认为没有人真正理解格式语言,所以保持简单是 IMO 的首选。现在使用 Python 3.6,我建议这样写:f"{number:.1f}".
    【解决方案3】:
    round(number, 1)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-04
      • 2012-09-23
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 2011-03-22
      相关资源
      最近更新 更多