我使用的软件 (Oracle Siebel) 仅支持带有运算符乘法、除法、减法、加法和 XOR 的 JavaScript 表达式( *
, /
, -
, +
, ^
)。我没有其他运营商,例如 !
或 ? :
可用。
使用上述运算符,是否可以将非零数字转换为 1,如果已经为零,则将其保留为 0?该数字可以是正数、零或负数。
例子:
var c = 55;
var d; // d needs to set as 1
I tried c / c
, but it evaluates to NaN
when c
is 0. d
needs to be 0 when c
为 0。
c 是一个货币值,它最多有两个尾随数字和 12 个前导数字。
我试图通过将数字转换为布尔值 0 或 1,然后乘以表达式的其他部分来模拟 if
条件。
原文由 yas 发布,翻译遵循 CC BY-SA 4.0 许可协议
c / (c + 5e-324)
应该可以。 (常量5e-324
是Number.MIN_VALUE
,最小的可表示正数。)如果 x 为 0,则正好为 0,并且如果 x 不为零(从技术上讲,如果 x 至少为 4.450147472501 e-308,问题中允许的最小非零数 0.01 是),JavaScript 的浮点数学计算太不精确,答案不能与 1 不同,所以它会正好是 1。