【JS】Excelの演算子には気をつけようという話
はじめに
めちゃくちゃ根本的なミス、「演算子が違う」式でやらかした記録です。
終わりの始まり
JSで実装するシミュレーション案件があったのですが、
Excelの式で計算式が送られてきました。
ほぼ演算子が同じなのでひとまずそのままコピペしてテストしながら書き換えよう!
としたのが終わりの始まりでした。
rate = (ir / 12) / (1 - 1 / ((1 + (ir / 12)) ^ total));
この式、特におかしいところもなく計算は通ります。
ところが計算式を何度見直しても計算結果がExcelとは合いません。なぜ...
それもそのはず...
_人人人人人人人_
> 演算子が違う <
 ̄Y^Y^Y^Y^Y^Y^ ̄
解説
Excelでのべき乗は^
です。
が、JSでのべき乗演算子は**
なのです...(初歩的ミスすぎて辛い)
だいたい演算子が違うような根本的なミスはエラー吐いたりNaN出してくれるので気づくのですが、
今回の場合、^
がJSでビット排他的論理和として通っていたのです...😭
そのままでも計算は通るので怖い...(演算子ぐらい覚えとけよ...)
rate = (ir / 12) / (1 - 1 / ((1 + (ir / 12)) ** total));
余談
ちなみにビット排他的論理和なんて使ったことなかったのですが、
ビット排他的論理和演算子 (^) は、両方のオペランドの対応するビットの一方だけが 1 である位置のビットで 1 を返します。
だそうです。
参考
Author And Source
この問題について(【JS】Excelの演算子には気をつけようという話), 我々は、より多くの情報をここで見つけました https://zenn.dev/kibe/articles/158b1f8673dcf5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol