315.15321531321 のような入力を切り捨てるにはどうすればよいですか?
それ、どうやったら出来るの?
Python 2.x での文字列の書式設定は、それを行う必要があります。
>>> print '%.2f' % 315.15321531321
315.15
これにより、文字列表現が小数点以下 2 桁に制限されます。round(315.153215, 2)
を使用すると、別の float 値になってしまうことに注意してください。
>>> round(315.15321531321, 2)
315.14999999999998
技術的にround()
は正しいですが、で要求したように結果を「切り捨て」ません315.15
。さらに、315.157 のような値を丸めると、315.16 に近い値が生成されます...それが「切り捨て」の意味かどうかはわかりません。
print "%.2f" も丸めを行うようです。丸めと切り捨てを行う Python コードを次に示します。
num = 315.15627
print("rounded = %.2f" % num)
print("truncated = %.2f" % (int(num*100)/float(100)))
print(f'rounded = {num:.2f}')
print(f'truncated = {int(num*100)/float(100):.2f}')
**Outputs**
rounded = 315.16
truncated = 315.15
rounded = 315.16
truncated = 315.15
短く表示したい場合は、"%f"
書式設定フラグを使用できます。
value = 315.123123123
print "Value is: %.2f" % value
「追加の」数字を本当に切り捨てたい場合は、次のようにします。
from math import trunc
value = trunc(value*100)/100
組み込み関数round()
:
>>> num = 315.1532153132
>>> round(num, 2)
3.1499999999999998
いくつかのオプションがあります - round() を使用して数値を丸めることができますが、これにより不正確さが生じる可能性があります (たとえば、315.15 は 315.150000003 に丸められる可能性があります)。float を表示するときに float の値を切り捨てたいだけの場合は、printf("%.2f", mynumber) を使用して出力の幅を指定できます。特定のアプリケーションについて詳しく知らなくても、計算のために数値全体の長さを保持するのが一般的に良い考えであるため、これはおそらくより良い解決策です。