dav*_*ave 117 javascript siebel
我与软件(Oracle Siebel软件)仅支持与运营商乘,除,减,添加JavaScript表达式的工作,和XOR( ,*
,/
,-
,).+
^
我没有其他运营商,如!
或? :
可用.
使用上面的运算符,如果数字非零,是否可以将数字转换为1,如果数字已经为零,则将其保留为0?数字可以是正数,零或负数.
例:
var c = 55;
var d; // d needs to set as 1
Run Code Online (Sandbox Code Playgroud)
我试过了c / c
,但是NaN
当它c
为0 时它的计算结果为d
0时需要c
为0.
c是货币值,最多有两个尾随数字和12个前导数字.
我试图if
通过将数字转换为布尔值0或1 来模拟条件,然后将表达式的其他部分相乘.
CRi*_*ice 215
使用表达式n/n^0
.
如果n
不为零:
Step Explanation
------- -------------------------------------------------------------------------------
n/n^0 Original expression.
1^0 Any number divided by itself equals 1. Therefore n/n becomes 1.
1 1 xor 0 equals 1.
Run Code Online (Sandbox Code Playgroud)
如果n
为零:
Step Explanation
------- -------------------------------------------------------------------------------
n/n^0 Original expression.
0/0^0 Since n is 0, n/n is 0/0.
NaN^0 Zero divided by zero is mathematically undefined. Therefore 0/0 becomes NaN.
0^0 In JavaScript, before any bitwise operation occurs, both operands are normalized.
This means NaN becomes 0.
0 0 xor 0 equals 0.
Run Code Online (Sandbox Code Playgroud)
如您所见,所有非零值都转换为1,0保持为0.这充分利用了JavaScript NaN^0
中的0.
演示:
[0, 1, 19575, -1].forEach(n => console.log(`${n} becomes ${n/n^0}.`))
Run Code Online (Sandbox Code Playgroud)
Jos*_*ica 147
c / (c + 5e-324)
应该管用.(常数5e-324
是Number.MIN_VALUE
,最小的可表示正数.)如果x为0,则恰好为0,如果x为非零(技术上,如果x至少为4.45014771701440252e-308,则允许的最小非零数字问题,0.01,is),JavaScript的浮点数学太不精确,答案不同于1,因此它将精确地为1.
Kyl*_*dle 17
(((c/c)^c) - c) * (((c/c)^c) - c)
对于负数和正数,将始终返回1,对于0,将返回0.
它肯定比选择的答案更令人困惑,而且更长.但是,我觉得它不那么hacky而且不依赖常量.
编辑:正如@JosephSible所提到的,我的更紧凑版本和@ CRice的版本不使用常量是:
c/c^c-c
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14016 次 |
最近记录: |