たとえば x = 40 の場合、次の結果が必要です。
40"
x = 2.5 の場合、結果は次のようになります...
2.5"
したがって、基本的には小数点以下1桁までにフォーマットしたいと考えています。私は現在これを使用しています:
"{0:0.1f}\"".format(x, 1)
しかし、これは常に小数点以下1桁を表示しますが、これは私が本当に望んでいるものではありません...
たとえば x = 40 の場合、次の結果が必要です。
40"
x = 2.5 の場合、結果は次のようになります...
2.5"
したがって、基本的には小数点以下1桁までにフォーマットしたいと考えています。私は現在これを使用しています:
"{0:0.1f}\"".format(x, 1)
しかし、これは常に小数点以下1桁を表示しますが、これは私が本当に望んでいるものではありません...
1つのオプションは次のようなものです
"{0}\"".format(str(round(x, 1) if x % 1 else int(x)))
x
小数部がない場合は整数として表示されます。これについては、おそらくもっと良い方法があります。
これは再利用可能で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"
必ずしも完全にクリーンなソリューションであるとは限りませんが、少なくとももう少し明示的だと思います:
"{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 は少なくなります)。