我正在制作一个应用程序,它正在监听定期更新的价格,但偶尔我的数据源会向我抛出类似“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 中处理这些数字的任何优雅方法?