前提・実現したいこと
range関数がfloat型に対応していないので、
関数を定義したが、stepを0.1にすると
すごく細かい少数が出てきてしまう。
これは、2進法のためというのも何となく理解できました。
何か良い方法はないものでしょうか?
発生している問題・エラーメッセージ
python
1In:list(drange(17.8,20,0.1)) 2Out: 3[17.8, 4 17.900000000000002, 5 18.000000000000004, 6 18.100000000000005, 7 18.200000000000006, 8 18.300000000000008, 9 18.40000000000001, 10 18.50000000000001, 11 18.600000000000012, 12 18.700000000000014, 13 18.800000000000015, 14 18.900000000000016, 15 19.000000000000018, 16 19.10000000000002, 17 19.20000000000002, 18 19.300000000000022, 19 19.400000000000023, 20 19.500000000000025, 21 19.600000000000026, 22 19.700000000000028, 23 19.80000000000003]
該当のソースコード
python
1def drange(start, end, step): 2 n =start 3 while n + step < end: 4 yield n 5 n += step
試したこと
補足情報(FW/ツールのバージョンなど)
python3
回答6件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/23 06:39
2019/01/24 00:27