@hamamoto_abc (hamamoto)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

BigNumber(JavaScript)の計算について

解決したいこと

JavaScriptの BigNumber で割り算の計算が合わないよう?で困ってます。

有名なライブラリなので、不具合ではなく私の使い方の問題かと思うのですが自分で解決できなく...、すみませんがよろしくお願い致します。

発生している問題・エラー

const 左 = '0.0281134454724652963909385115760464';
const 右 = '464.0781427510956';
const 正答 = '0.000060579119942616444';

// 左 ÷ 右 = 正答
console.log(`${BigNumber(左).div(右)} ← BigNumberでの答え`);
console.log(`${正答} ← 正答`);

// ↑の出力結果は↓
// 0.00006057911994261644 ← BigNumberでの答え
// 0.000060579119942616444 ← 正答

BigNumber での結果が違うようなのです...。

"正答" は自分で計算したものですが以下のサイトでも確認しているので合っていると思います。
https://ja.wolframalpha.com/input?i=0.0281134454724652963909385115760464%C3%B7464.0781427510956

また、割り算なので答に除数(わる数:右)を掛けると商(わられる数:左)になるはずなので
その確認として以下のようにしてみましたが、結果が違うのでやはり計算がずれているように思います。

console.log(BigNumber(左).div(右).times(右));
console.log(左); // ↑と同じになるはずなのにならない。

// ↑の出力結果は↓
// 0.028113445472465294534625940571664
// 0.0281134454724652963909385115760464

よろしくお願い致します。

0 likes

1Answer

Returns a BigNumber whose value is the value of this BigNumber divided by n, rounded according to the current DECIMAL_PLACES and ROUNDING_MODE settings.

デフォルトでDECIMAL_PLACESは20となっていますのでこの桁数で丸められるようです.
設定を見直してください.

1Like

Comments

  1. @hamamoto_abc

    Questioner

    回答ありがとうございます。
    そうか、それだけの事でしたか(>_<)
    以下のようにしたら合うようになりました。助かりました。ありがとうございます。
    BigNumber.config({ DECIMAL_PLACES: 25 })

Your answer might help someone💌