1. ホーム
  2. python

[解決済み] 浮動小数点数を小数点以下第二位まで丸めるには?

2023-04-26 04:01:18

質問

例えば 8.8333333333333339 で、これを 8.84 . Pythonでこれを達成するにはどうすればよいですか?

round(8.8333333333333339, 2) 与える 8.83 であって 8.84 . 私はPythonまたは一般的なプログラミングに新しいです。

文字列として出力し、その結果がさらに利用されるのは避けたいのですが。この問題の詳細については Tim Wilson の Python プログラミングのヒント。ローンと支払いの計算機 .

どのように解決するのですか?

8.833333333339 (または 8.833333333333334 の結果は 106.00/12 ) を正しく小数点以下2桁に丸めたものは 8.83 . 数学的には,あなたが欲しいのは 天井関数 . Pythonの math モジュールのものは ceil :

import math

v = 8.8333333333333339
print(math.ceil(v*100)/100)  # -> 8.84

それぞれ、floor関数とceiling関数は一般に実数を小数点以下がゼロの最大または最小の整数に対応させます。したがって、小数点以下2桁で使用する場合は、まず10を掛けます。 2 を掛けます。 (または 100) を掛けて小数点を移動し、その後でそれを割って補正します。

を使いたくない場合は math モジュールを使いたくない場合は、私が書いたこの(最小限のテストしかしていない)実装を使うことができます。

def ceiling(x):
    n = int(x)
    return n if n-1 < x <= n else n+1

このことと、リンク先の ローンと支払いの計算機 問題を解決します。

サンプル出力から、彼らは 切り上げ という、いわゆる天井機能の効果で、毎月の支払額が少なくなります。これは、毎月少しずつ 1 12 が支払われている。そのため、最終的な支払額は通常より少し少なくなり、残りの未払い額はわずか 8.76 .

通常の四捨五入を使用して、毎月の支払額を 8.83 となり、最終的な支払額はわずかに高い 8.87 . しかし、現実の世界では、人々は一般的に支払額が増えることを好まないので、各支払額を切り上げるのが一般的なやり方です - それはまた、貸主により早くお金を返すことにもなります。