小数点の計算で期待値とちがう結果になってしまいどのように修正すればいいか
困っています
今のコード
python
1from math import ceil 2 3ceil(0.07 * 100 ) / 100 40.08
-> 期待値は0.07なのですが0.08 となってしまします。
小数点第2位まで表示して、それ以下は切り上げを行いたいのですが
どのように修正すればいいですか
python
1 2float(Decimal(0.079).quantize(Decimal('.00'))) 3
とすると良さそうなのですが 合っているか確認する方法はありますか
期待値は
python
1def test_95_per_5_Mbps_007(): 2 assert get_kakin(0.07) == 0.07 3 4def test_95_per_5_Mbps_0070(): 5 assert get_kakin(0.070) == 0.07 6 7def test_95_per_5_Mbps_0071(): 8 assert get_kakin(0.071) == 0.08 9 10def test_95_per_5_Mbps_0072(): 11 assert get_kakin(0.072) == 0.08 12 13def test_95_per_5_Mbps_0075(): 14 assert get_kakin(0.075) == 0.08 15 16def test_95_per_5_Mbps_0076(): 17 assert get_kakin(0.076) == 0.08 18 19def test_95_per_5_Mbps_0079(): 20 assert get_kakin(0.079) == 0.08
実行してみればいいのでは?
もちろん実行はしています バグを修正したいので どのように検証 テストをすればいいかも含めて知りたいのです。
>>> float(Decimal(0.071).quantize(Decimal('.00')))
0.07
>>> float(Decimal(0.079).quantize(Decimal('.00')))
0.08
であれば最後の一文をそのように直すべきでは。この欄で返答するのではなくて質問に反映させるべきです。
「小数点第2位まで表示して、それ以下は切り上げを行いたい」というのがよく分かりません。
いくつか具体的な数値の変換例をあげてもらえないでしょうか?
(たとえば0.07001, 0.0701, 0.0704, 0.0705の結果など)
切り上げというのは。少数以下が0でない場合、整数に1加算して小数部を破棄するという事だと思いますが?・・・違いますか?
もしそうなら、最初の答えで合っているのでは?
回答6件
あなたの回答
tips
プレビュー