97

Python float を x の小数に丸める方法はありますか? 例えば:

>>> x = roundfloat(66.66666666666, 4)
66.6667
>>> x = roundfloat(1.29578293, 6)
1.295783

それらをトリミング/切り詰める方法は見つかりましたが (66.666666666 --> 66.6666)、丸めることはできません (66.666666666 --> 66.6667)。

4

5 に答える 5

105

組み込み関数を使用しますround()

In [23]: round(66.66666666666,4)
Out[23]: 66.6667

In [24]: round(1.29578293,6)
Out[24]: 1.295783

ヘルプround():

round(number[, ndigits]) -> 浮動小数点数

数値を指定された 10 進数の精度 (デフォルトは 0 桁) に丸めます。これは常に浮動小数点数を返します。精度は負の場合があります。

于 2012-11-20T17:56:40.630 に答える
0

Mark Dickinson の回答は完全ですが、float(52.15) ケースでは機能しませんでした。いくつかのテストの後、私が使用しているソリューションがあります:

import decimal
        
def value_to_decimal(value, decimal_places):
    decimal.getcontext().rounding = decimal.ROUND_HALF_UP  # define rounding method
    return decimal.Decimal(str(float(value))).quantize(decimal.Decimal('1e-{}'.format(decimal_places)))

(「値」を浮動小数点数、次に文字列に変換することは非常に重要です。つまり、「値」は浮動小数点数、10 進数、整数、または文字列のいずれかの型にすることができます!)

これが誰にも役立つことを願っています。

于 2020-07-22T13:40:34.817 に答える