Python字符串插值:仅显示必要的小数位

dom*_*om0 11 python string formatting

如果我有例如x = 40我想要以下结果:

40"
Run Code Online (Sandbox Code Playgroud)

对于x = 2.5,结果应该是......

2.5"
Run Code Online (Sandbox Code Playgroud)

所以我基本上想要格式化到最多一个小数位.我目前使用这个:

"{0:0.1f}\"".format(x, 1)
Run Code Online (Sandbox Code Playgroud)

但这显示的只是一个小数位,这不是我想要的......

Mic*_*ior 9

一种选择是类似的

"{0}\"".format(str(round(x, 1) if x % 1 else int(x)))
Run Code Online (Sandbox Code Playgroud)

x如果没有小数部分,它将显示为整数.这可能是一个更好的方法.


Chr*_*ord 5

这是可重用的,可用于strfloat、 或int,并将转换''0

def minimalNumber(x):
    if type(x) is str:
        if x == '':
            x = 0
    f = float(x)
    if f.is_integer():
        return int(f)
    else:
        return f
Run Code Online (Sandbox Code Playgroud)

与:

print "{}\"".format(minimalNumber(x))
Run Code Online (Sandbox Code Playgroud)

例子:

x = 2.2
print "{}\"".format(minimalNumber(x))
x = 2.0
print "{}\"".format(minimalNumber(x))
Run Code Online (Sandbox Code Playgroud)

哪些输出:

2.2"
2"
Run Code Online (Sandbox Code Playgroud)

  • 您可能希望使用 `float(x).is_integer()` 来允许使用整数。(`is_integer` 不是为整数定义的) (2认同)