🎉

[Bug #20873] 特定の Rational を printf('%f') したときのバグ報告

2024/11/01に公開

[Bug #20873] printf("%f") returns wrong result for Rational with FIXNUM_MIN

  • FIXNUM_MIN が含まれている Rational に対して printf("%f") を行うと意図しない結果になるバグ報告
require 'rbconfig/sizeof'

fmin, fmax = RbConfig::LIMITS.values_at("FIXNUM_MIN", "FIXNUM_MAX")
rational = Rational(fmin, fmax)

pp rational   # => (-4611686018427387904/4611686018427387903)

# - が1つ多い
pp sprintf("%f", rational)   #=> --1.000000
  • このバグはすでに開発版の Ruby 3.4-dev だと修正済みです
GitHubで編集を提案

Discussion