【问题标题】:How to express infinity in Ruby?如何在 Ruby 中表达无穷大?
【发布时间】:2011-08-12 07:21:52
【问题描述】:

在 Ruby 中是否有表达 Infinity 的关键字?

【问题讨论】:

    标签: ruby infinity


    【解决方案1】:

    如果你使用 ruby​​ 1.9.2,你可以使用

    >> Float::INFINITY #=> Infinity
    >> 3 < Float::INFINITY #=> true
    

    或者您可以使用以下*创建自己的常量:
    我检查过在 Ruby 1.8.6、1.8.7 和 1.9.2 中你有 Float.infinite?

    PositiveInfinity = +1.0/0.0 
    => Infinity
    
    NegativeInfinity = -1.0/0.0 
    => -Infinity
    
    CompleteInfinity = NegativeInfinity..PositiveInfinity
    => -Infinity..Infinity
    

    *我已经在 Ruby 1.8.6 和 1.9.2 中验证了这一点

    【讨论】:

    • 对。我尝试在任何整数和该值之间进行比较,它似乎工作正常。我现在只是想知道这是否安全!
    • 这里有一篇很好的文章描述了 Ruby 中 Infinity 的属性(包括通过除以 0 得出的 Infinity):nithinbekal.com/posts/ruby-infinity - 应该让您了解它是否安全。 (不管你使用什么编程语言,恕我直言,用数字 Infinity 值弄乱实际上是不安全或真正需要的,除非你正在做与数学相关的实际工作)
    • 这太好了,谢谢,我相信你也可以为负无穷大做-Float::INFINITY
    【解决方案2】:

    http://www.ruby-doc.org/stdlib-1.9.3/libdoc/bigdecimal/rdoc/BigDecimal.html#label-Infinity

    1.9.3p429 :025 > BigDecimal('Infinity')
     => #<BigDecimal:7f8a6c548140,'Infinity',9(9)>
    1.9.3p429 :026 > BigDecimal('-Infinity')
     => #<BigDecimal:7f8a6a0e3728,'-Infinity',9(9)>
    1.9.3p429 :027 > 3 < BigDecimal('Infinity')
     => true
    
    1.9.3p429 :028 > BigDecimal::INFINITY
     => #<BigDecimal:7f8a6ad046d8,'Infinity',9(9)>
    

    【讨论】:

    • 效果也很好,恕我直言,看起来比 Float::INFINITY 更好
    【解决方案3】:

    没有关键字,但 1.9.2 有一个常量:

    >> Float::INFINITY #=> Infinity
    >> 3 < Float::INFINITY #=> true
    

    【讨论】:

    • +1,我没有意识到这是在 1.9.2 中。如果这是他们所针对的版本,我已经更新了我的答案,将人们引导至您的答案。
    猜你喜欢
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 2022-08-12
    • 2019-03-19
    • 1970-01-01
    相关资源
    最近更新 更多