Pythonで浮動小数点値を四捨五入せずに特定の小数点以下の桁数に切り捨てるにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-06 00:25:02
オリジナル
318 人が閲覧しました

How to Truncate Float Values to a Specific Number of Decimal Places in Python without Rounding?

浮動小数点値を特定の小数点以下の桁数に切り捨てる方法

Python では、浮動小数点から数字を削除して固定値を実現できます。小数点以下の桁数。次の例を考えてみましょう。

1.923328437452 → 1.923
ログイン後にコピー

浮動小数点数を小数点以下 3 桁で切り捨てると、望ましい出力は 1.923 になります。

関数以下はこのタスクを実行します。

def truncate(f, n):
    '''Truncates/pads a float f to n decimal places without rounding'''
    s = '{}'.format(f)
    if 'e' in s or 'E' in s:
        return '{0:.{1}f}'.format(f, n)
    i, p, d = s.partition('.')
    return '.'.join([i, (d+'0'*n)[:n]])
ログイン後にコピー

説明

この関数は、浮動小数点数を文字列表現に変換し、整数部分と小数点の 3 つの部分に分割します。 、小数部分。次に、指定された小数点以下の桁数まで小数部分にゼロを埋め込み、余分な桁が切り捨てられるようにします。

科学表記の処理

関数は次のことを確認します。 float は科学表記法 (e または E) で表され、指数を保持するために異なる形式の関数が使用されます。

古い Python バージョン

2.7 より前の Python バージョンの場合場合でも、浮動小数点を切り捨てることはできますが、浮動小数点書式設定メカニズムの制限により、結果はそれほど正確ではない可能性があります。考えられる回避策は、切り捨てる前に float をより高い精度に丸めることです。

def truncate(f, n):
    '''Truncates/pads a float f to n decimal places without rounding'''
    s = '%.12f' % f
    i, p, d = s.partition('.')
    return '.'.join([i, (d+'0'*n)[:n]])
ログイン後にコピー

以上がPythonで浮動小数点値を四捨五入せずに特定の小数点以下の桁数に切り捨てるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート