発覚の経緯 プログラミングコンテストサイト「AtCoder」の「C - AtCoDeerくんと選挙速報」でどうしても正答ができなかった。 それほど難しいロジックはないはずなのに…… そして、計算途中に変な値になっていることが発見された。 出現条件 Windows版のPHP7.0〜7.1 で 117231566641875000 * 7 を計算する。 PHP7.1の最新版では間違った結果が表示されます。 PHP7.2.0以降では正しい結果(820620966493125000)が表示されます。 どういう不具合か 117231566641875000 ✕ 7 = 820620966493125120 大きな数字ですが、下4桁に注目してください。 5000に7を掛けて答えは35000なので、掛け算の結果も下4桁は5000のはず。 なのに、5120という中途半端な数字(計算結果が正しくない)