gpt4 book ai didi

Ruby:如何检查负零

转载 作者:数据小太阳 更新时间:2023-10-29 08:18:19 24 4
gpt4 key购买 nike

如何确定 Float 值是否为负零(而非正数)?

不幸的是:

-0.0 == 0.0   # => true
-0.0 === 0.0 # => true

我最初的解决方案有效但很丑陋:

x.to_s == '-0.0' 

来自 this question , 我发现

x == 0 and 1 / x < 0

是否有更好、更像 Ruby 的方法?

最佳答案

Ruby 的 BigDecimal 类有一个 sign 方法,可以为负零生成正确的结果。如果您需要'bigdecimal/util',则可以使用to_d 方法将Float 转换为BigDecimal

require 'bigdecimal'
require 'bigdecimal/util'

0.0.to_d.sign
#=> 1

-0.0.to_d.sign
#=> -1

将它与 zero? 结合起来就可以了:

def negative_zero?(x)
x.zero? && x.to_d.sign == -1
end

negative_zero?(0.0)
#=> false

negative_zero?(-0.0)
#=> true

关于Ruby:如何检查负零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27856806/

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