vueにおける数値*100後の計算ミス問題:0.3*100で得られた結果は229.9999999999999999999999999999999999999
前言:
消費タイプシステムを作るとき、コンピュータ乗算の問題が結果に問題があるという問題に直面しました.
例えば、0.3*100で得られた結果は229.999999999999999999999999999997
理由:
バイナリと10進数変換におけるリミット問題では,浮動小数点演算帯上の点の微小な誤差が正常な現象である.
しかし、消費にとって、この問題は深刻で、私たちが要求している計算には問題がありません.
解決策:
次の方法をページmethodsに導入します.パラメータはあなたのデータです.(注意:Stingタイプが必要です)、戻ってきた値を取得します.処理されたデータです.
もう一つ、@blurのイベントでこのメソッドを呼び出すとエラーが発生します.おかしいですが、他の場所で呼び出すのは問題ありません.
ここまでで終わり
消費タイプシステムを作るとき、コンピュータ乗算の問題が結果に問題があるという問題に直面しました.
例えば、0.3*100で得られた結果は229.999999999999999999999999999997
理由:
バイナリと10進数変換におけるリミット問題では,浮動小数点演算帯上の点の微小な誤差が正常な現象である.
しかし、消費にとって、この問題は深刻で、私たちが要求している計算には問題がありません.
解決策:
次の方法をページmethodsに導入します.パラメータはあなたのデータです.(注意:Stingタイプが必要です)、戻ってきた値を取得します.処理されたデータです.
もう一つ、@blurのイベントでこのメソッドを呼び出すとエラーが発生します.おかしいですが、他の場所で呼び出すのは問題ありません.
/**
*
* 2.3*100 230
* */
yuantofen(val) {
var s = val.split(".")
var yuan = parseInt(s[0]) * 100;
var fen = 0;
if (s.length > 1) {
let fenVal = (parseInt(s[1].substr(0, 1))) * 10;
fen += fenVal;
if (s[1].length > 1) {
fen += parseInt(s[1].substr(1, 1));
}
}
var fee = yuan + fen;
return fee;
},
ここまでで終わり