1. ホーム
  2. javascript

[解決済み] 数学演算子 *, /, +, -, ^ は0でない数を1に変換するのに使えるか?

2022-08-10 17:41:23

質問

私はソフトウェア (Oracle Siebel) で作業していますが、JavaScript の式は乗算、除算、減算、加算、XOR の演算子しかサポートしていません ( * , / , - , + , ^ ). 他の演算子、例えば ! または ? : が利用できます。

上記の演算子を用いて、ある数値が0でない場合は1に変換し、すでに0である場合は0のままにすることは可能でしょうか?数値は正でも0でも負でも構いません。

var c = 55;

var d;  // d needs to set as 1

試しに c / c を試してみましたが、評価されるのは NaN と評価されるとき c が0である場合。 d が0である必要があります。 c が0である場合、0である必要があります。

cは通貨値で、最大で末尾2桁、先頭12桁になります。

をエミュレートしようとしているのです。 if 条件をエミュレートするために、数値を 0 または 1 のブール値に変換し、式の他の部分を乗算します。

どのように解決するのですか?

c / (c + 5e-324) でうまくいくはずです。(定数 5e-324 Number.MIN_VALUE であり、表現可能な最小の正の数です)。x が 0 の場合、それは正確に 0 であり、x が 0 でない場合 (技術的には、x が少なくとも 4.45014771701440252e-308 であれば、問題で許される 0.01 という最小の 0 でない数)、JavaScript の浮動小数点演算は不正確なので、答えは 1 以外のものになり、正確に 1 として表示されることになります。