ホームページ >バックエンド開発 >Python チュートリアル >四捨五入せずに浮動小数点数を特定の小数点以下の桁数に切り捨てるにはどうすればよいですか?

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

Susan Sarandon
Susan Sarandonオリジナル
2024-11-06 09:45:02848ブラウズ

How Do I Truncate a Float to a Specific Number of Decimal Places Without Rounding?

浮動小数点から数字を削除する方法

浮動小数点数から数字を削除し、小数点以降の特定の桁数を保持するには、次の手順を実行します。これらの手順:

実装 (Python 2.7 および 3.1 ):

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]])

実装 (Python の古いバージョン):

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]])

説明:

  1. 文字列への変換: '{}' を使用して、float を完全精度で文字列に変換します。
  2. ハンドル科学表記法: 文字列表現に「e」または「E」が含まれる場合、「{0:.{1}f}」を使用して書式設定します。
  3. 文字列の分割: 文字列を小数点の前 (i)、小数点自体 (p)、小数点の後 (d) の 3 つの部分に分割します。
  4. Truncate orパッド: 小数点以下 n 桁を取得するために必要な場合は d に '0 を追加します。小数点以下 n 桁を超える場合は d を切り捨てます。

特別な考慮事項:

  • 精度に関する考慮事項: Python の古いバージョン (2.6 または 3.0 まで) では、切り捨てエラーを避けるために、丸めに固定精度 (12 など) を選択する必要がある場合があります。
  • 丸めおよび浮動小数点エラー: 一部の浮動小数点リテラルは、コード内では異なっているように見えても、同じバイナリ値を表す場合があり、切り捨てに不一致が生じる可能性があります。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。