python(numpy,float或十进制)-在字符串表示形式中设置最小和最大小数位

时间:2019-07-16 15:05:37

标签: python string numpy floating-point

在Python中(以常规浮点数,numpy或十进制表示),是否可以在获取字符串表示形式时同时设置最小和最大小数位?

说我希望最小的小数位数为2,最大的小数位数为6。

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

1.00-> 1.00

1.001-> 1.001(保持精度)

1.000100-> 1.0001(保持精度,但下降尾随0s)

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

我首先想到的是 ('%.6f' % f).rstrip('0') 这会将最大精度设置为6,并丢弃不必要的0。但是它没有做最小的小数位。

1 个答案:

答案 0 :(得分:0)

我找到了这个解决方案:

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