gpt4 book ai didi

ruby - 在 Ruby 中处理大量(高精度) float

转载 作者:太空宇宙 更新时间:2023-11-03 17:02:04 24 4
gpt4 key购买 nike

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

最佳答案

您需要从数据源中找出那些非常大的数字的含义。价格实际上不是 1.797e+308,但也可能不是 1.797。您如何处理这些数字完全取决于您应该将它们解释为什么值。

更新:我不确定您是否理解这个数字的含义。 1.79769313486232e+308 是 1.79769313486232 乘以 10 的 308 次方。是小数点左边300多位的数字。这不是价格,这是一个错误。它是 double float 所能表示的上限。

换句话说,您得到的是 0xFFFFFFFF 或类似的东西,但被解释为 float 。

关于ruby - 在 Ruby 中处理大量(高精度) float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3463293/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com