BigDecimal.valueOf(float) の罠 — 浮動小数点の誤差が切り捨てで表面化する話 ある数値計算で「本来2527になるはずの値が2526になる」というズレに遭遇した。原因は BigDecimal に float を渡していたことだった。float→double 昇格・BigDecimal.valueOf の挙動・切り捨てによる誤差の増幅を整理し、正しい書き方と、再発をバイトコードから検出する方法までまとめる。