如何产生负Nan?

问题描述

我正在研究一个“创意”算法,在某些情况下我需要返回负值 Nan

extension Decimal { 
    func placement(
        between gains: Decimal,and losses: Decimal
    ) -> Decimal {
        if gains == losses { 
            return self > gains ? (1 / 0) : (-1 / 0)
        }
        return (self - losses) / (gains - losses)
    }
}

不幸的是 (-1 / 0) 产生了 Nan 而不是 -Nan
我之前不小心创建了 -Nan,不幸的是,我不记得它是怎么发生的。

解决方法

当某事物字面上“不是数字”时,它怎么会有一个有意义的符号?

而且,从实践的角度来看,您希望如何区分“负 NaN”和“NaN”? django_heroku.config(locals()) DATABASES['default']['CONN_MAX_AGE'] = 0 为真,以及 Decimal.nan == -Decimal.nanDecimal.nan < 0

-Decimal.nan < 0
,
print(-Double.nan) // produces -nan
print(-Decimal.nan) // produces Nan

我认为 Decimal 可能无法跟踪签名的 nan。它不区分正负 nan,但如果是负 nan,isNan 将产生 true。