【问题标题】:python (numpy, float, or decimal) - set min amd max decimal places in string representationpython(numpy、float或decimal) - 在字符串表示中设置最小和最大小数位
【发布时间】:2019-11-25 08:54:00
【问题描述】:

在 Python 中(无论是常规浮点数、numpy 还是小数),有没有办法在获取字符串表示时同时设置最小和最大小数位?

假设我希望最小小数位为 2,最大为 6。我想要的是以下

1 -> 1.00(最小到小数点后 2 位)

1.00 -> 1.00

1.001 -> 1.001(保持精度)

1.000100 -> 1.0001(保持精度,但去掉尾随的 0)

1.000124999999 -> 1.00125(最多 6 位小数)

我的第一个想法是做 ('%.6f' % f).rstrip('0') 这会将最大精度设置为 6,并删除不必要的 0。但它不做最小小数位。

【问题讨论】:

    标签: python string numpy floating-point


    【解决方案1】:

    我找到了这个解决方案:

    def set_min_max(s, min, max):
        n1 = (str('%.' + str(max) + 'f') % float(s)).rstrip('0')
        if len(n1.rsplit(".")[-1]) < min:
            n1 = str('%.'+ str(min) + 'f') % float(s)
        return n1
    

    min = 2
    max = 6
    s = '1'
    print (set_min_max(s, min, max))
    s = '1.00'
    print (set_min_max(s, min, max))
    s = '1.001'
    print (set_min_max(s, min, max))
    s = '1.000100'
    print (set_min_max(s, min, max))
    s = '1.000124999999'
    print (set_min_max(s, min, max))
    

    > 1.00
    > 1.00
    > 1.001
    > 1.0001
    > 1.000125
    

    【讨论】:

      猜你喜欢
      • 2013-02-23
      • 2022-12-18
      • 1970-01-01
      • 1970-01-01
      • 2021-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-22
      相关资源
      最近更新 更多