Python出力10進制御メソッド

1.必要な精度が低い

高精度の浮動小数点数を低精度の浮動小数点数に変換します。

1.round()組み込みメソッド

round()は単純な丸めメソッドではありません。

>>> round(2.5)
2
>>> round(1.5)
2
>>> round(2.675)
3
>>> round(2.675, 2)
2.67

round()パラメータとして数値が1つしかない場合、桁数が指定されていない場合は整数を返し、最も近い整数になります(これは丸めに似ています)。ただし、.5が表示される場合、両側の距離は同じであり、round()は最も近い偶数の2を取ります。

四捨五入する小数点数を指定する場合は、通常、四捨五入のルールが使用されますが、.5の場合、四捨五入する桁数の前の小数が奇数の場合は直接破棄され、でも、切り上げられます。

以下の例を参照してください。

>>> round(2.635, 2)
2.63
>>> round(2.645, 2)
2.65
>>> round(2.655, 2)
2.65
>>> round(2.665, 2)
2.67
>>> round(2.675, 2)
2.67

2.フォーマットを使用する

効果はround()と同じです。

>>> a = ("%.2f" % 2.635)
>>> a
'2.63'
>>> a = ("%.2f" % 2.645)
>>> a
'2.65'
>>> a = int(2.5)
>>> a
2

2.17桁以上を必要とする精密分析

Pythonのデフォルトの精度は小数点以下17桁ですが、ここで問題があります。計算でより高い精度(小数点以下17桁以上)を使用する必要がある場合はどうすればよいですか?

1.フォーマットを使用します(非推奨)


>>> a = "%.30f" % (1/3)
>>> a
'0.333333333333333314829616256247'

2. 10進モジュールを高精度で使用し、getcontextと連携します

>>> from decimal import *
>>> print(getcontext())
Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999,
capitals=1, clamp=0, flags=[], traps=[InvalidOperation, DivisionByZero,
Overflow])
>>> getcontext().prec = 50
>>> b = Decimal(1)/Decimal(3)
>>> b
Decimal('0.33333333333333333333333333333333333333333333333333')
>>> c = Decimal(1)/Decimal(17)
>>> c
Decimal('0.058823529411764705882352941176470588235294117647059')
>>> float(c)
0.058823529411764705

デフォルトのコンテキスト精度は28ビットで、50ビット以上に設定できます。このようにして、複雑な浮動小数点数を分析するときに、制御できる精度を高めることができます。
実際、コンテキスト内のrounding=ROUND_HALF_EVENパラメーターに注意を払うことができます。ROUND_HALF_EVEN、半分の場合、偶数に近い。

3.小数点と四捨五入について

小数について話すので、整数について話す必要があります。通常、これらの関数は丸めに使用されます。

1. round()

これは言うことではありません、それは前に言われました。これは単なる丸めではなく、ROUND_HALF_EVENの戦略であることに注意してください。

2.数学モジュールのceil(x)

x以上の最小の整数を取ります。

3.数学モジュールのfloor(x)

x以下の最大の整数に移動します。

>>> from math import ceil, floor
>>> round(2.5)
2
>>> ceil(2.5)
3
>>> floor(2.5)
2
>>> round(2.3)
2
>>> ceil(2.3)
3
>>> floor(2.3)
2
>>>

あなたはそれを学びましたか?

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/m0_67575344/article/details/123928944