vueにおける数値*100後の計算ミス問題:0.3*100で得られた結果は229.9999999999999999999999999999999999999

911 ワード

前言:
消費タイプシステムを作るとき、コンピュータ乗算の問題が結果に問題があるという問題に直面しました.
例えば、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;
    },

ここまでで終わり