価格が定期的に更新されるのをリッスンするアプリケーションを作成していますが、データ ソースから "1.79769313486232e+308" のようなメッセージが表示されることがあります。送信される数値は決して大きな数値ではありません (例: "179769313486232e+308") が、上記の例のように、かなりの精度で送信されます。
小数点以下の最初の数桁の後にすべてを削除して、「1.798」のような結果になるようにしたいのですが、次のコードは機能しません。
irb(main):001:0> s = '1.79769313486232e+308'
=> "1.79769313486232e+308"
irb(main):002:0> ("%.3f" % s).to_f
(irb):2: warning: Float 1.79769313486232e+30... out of range
=> 0.0
Ruby でこの種の数値を適切に処理する方法はありますか?