このメソッドは、浮動小数点精度を使用して計算をしています。浮動小数点精度は非常に不正確です。 たとえば、16777216.0f + 1.0f = 16777216.0f。 その代わりに double の使用を検討してください。