12

たとえば x = 40 の場合、次の結果が必要です。

40"

x = 2.5 の場合、結果は次のようになります...

2.5"

したがって、基本的には小数点以下1桁までにフォーマットしたいと考えています。私は現在これを使用しています:

"{0:0.1f}\"".format(x, 1)

しかし、これは常に小数点以下1桁を表示しますが、これは私が本当に望んでいるものではありません...

4

5 に答える 5

10

1つのオプションは次のようなものです

"{0}\"".format(str(round(x, 1) if x % 1 else int(x)))

x小数部がない場合は整数として表示されます。これについては、おそらくもっと良い方法があります。

于 2012-05-08T22:43:54.527 に答える
5

これは再利用可能でstr、 、float、または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

使用:

print "{}\"".format(minimalNumber(x))

例:

x = 2.2
print "{}\"".format(minimalNumber(x))
x = 2.0
print "{}\"".format(minimalNumber(x))

どの出力:

2.2"
2"
于 2014-11-29T17:15:39.673 に答える
3

必ずしも完全にクリーンなソリューションであるとは限りませんが、少なくとももう少し明示的だと思います:

"{1:0.{0}f}\"".format(int(not float(x).is_integer()), x)

これは、より不可解なものに置き換えることができます (Michael Mior の丸めのアイデアに基づく):

"{1:0.{0}f}\"".format(int(x % 1 > 0), x)

より短い式を好む場合(ただし、pythonic は少なくなります)。

于 2012-05-09T00:19:40.373 に答える