yukicoder 軽減税率?で誤差に苦しんだ。かけてから割るのと、割ってからかけるの、floorしたときに切り捨てるものが違ってくる pic.twitter.com/nz7UoBiY8b
— peroon_cp (@peroon_cp) November 22, 2019
原因
- パット見 1839816.0000に見えるが、実は1839815.9999999..... で、floorした時に1839815.0となってしまう
対策
- かけるのを先にやれるなら先にやる
eps
- epsを足してからfloorすればいいと思ったが、今回の場合
const long double EPS = 0.0000000001;
- を足しからfloorしても誤差は消えず、もっと荒いEPSを足したら意図通りに動いた。しかしEPSを大きくしていくと別のミスが発生しそう
プログラミングコンテストチャレンジブック [第2版] ?問題解決のアルゴリズム活用力とコーディングテクニックを鍛える?
- 作者: 秋葉拓哉,岩田陽一,北川宜稔
- 出版社/メーカー: マイナビ
- 発売日: 2012/01/28
- メディア: 単行本(ソフトカバー)
- 購入: 25人 クリック: 473回
- この商品を含むブログ (36件) を見る