AtCoder ARC107でつまづいたので、復習note。
桁が大きい計算で除算を使うと浮動小数の誤差が現れる。 なので、桁が大きいときは、切り捨て除算を使う。
# 桁が大きい計算で除算をすると誤差が出る n = 987654321 # 987654321 print(n) # 487730529388812672 (間違い) print(int((n * (n + 1)) / 2)) # 487730529388812681 print(n * (n + 1) // 2) ## そもそもfloat型自体が誤差を含んでいる # 0.1 print(0.1) # 0.10000000000000000555 小数点以下18桁で誤差が登場する print(format(0.1, '.20f'))
- 作者:Bill Lubanovic
- 発売日: 2015/12/01
- メディア: 単行本(ソフトカバー)