gpt4 book ai didi

javascript - 可以使用数学运算符 *、/、+、-、^ 将非零数字转换为 1 吗?

转载 作者:IT王子 更新时间:2023-10-29 02:39:39 24 4
gpt4 key购买 nike

我使用的软件 (Oracle Siebel) 仅支持带有运算符乘法、除法、减法、加法和 XOR 的 JavaScript 表达式(*/-, +, ^).我没有其他运算符,例如 !? : 可用。

使用上述运算符,是否可以将非零数字转换为 1,如果已经为零则保留为 0?该数字可以是正数、零或负数。

例子:

var c = 55;

var d; // d needs to set as 1

我尝试了 c/c ,但是当 c 为 0 时,它的计算结果为 NaNd 需要c 为 0 时为 0。

c 是一个货币值,它最多有两个尾随数字和 12 个前导数字。

我试图通过将数字转换为 bool 值 0 或 1,然后乘以表达式的其他部分来模拟 if 条件。

最佳答案

使用表达式 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.

如果 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.

如您所见,所有非零值都转换为 1,而 0 保持为 0。这利用了在 JavaScript 中 NaN^0 为 0 的事实。

演示:

[0, 1, 19575, -1].forEach(n => console.log(`${n} becomes ${n/n^0}.`))

关于javascript - 可以使用数学运算符 *、/、+、-、^ 将非零数字转换为 1 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52979555/

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