swift - 如何产生负楠?
问题描述
我有一个我正在研究的“创造性”算法,并且在某些情况下我需要返回负数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”?是真的,Decimal.nan == -Decimal.nan
以及Decimal.nan < 0
-Decimal.nan < 0
let n = Decimal.nan
let nn = -Decimal.nan
print (n < 0) // true
print (nn < 0) // true
print (nn < n) // false
print (n < nn) // false
print (n == nn) // true
推荐阅读
- python-3.x - 如何通过比较两列对数据框进行排序
- reactjs - reactjs中Web应用程序的三点更多选项菜单的逻辑
- javascript - 提供给叠加层的“数组”类型的无效道具“孩子”。预期单个反应元素
- jenkins - 如何在脚本化管道中获取 Jenkins 环境变量?
- sql - 点燃:本地运行reduce查询失败
- android - java.lang.IllegalStateException:应为 BEGIN_OBJECT,但在第 3 行第 1 列路径 $
- drupal-8 - 使用两个视图创建页面 drupal 8
- angular - 当我上传 csv 文件时,它会引发 500 错误
- python - 如何从时间戳计算正常运行时间?
- regex - 获取postgres中文本“年”之前的数值