jqueryにおける浮動小数点数演算結果を2桁の小数点数で保持する方法
560 ワード
今日は偶然簡単な演算を使いました.38.6-38.2で、結果は0.3999999999999999996で、一般的には0.4に違いありません.照会により,計算機内部のバイナリは0.1,0.2のような数字を正確に表現できないことが分かった.原理:簡単な0.1のように10進数で表す:1×10^-1、つまり0.1でバイナリで表す:0×2^-1+0×2^-2+0×2^-3+1×2^−4+1×2^−5……つまり:0.0001 1001 1001 1001…基本的には無限循環小数
しかし、結果がバイナリで正確に表すことができる小数である場合、例えば0.5はバイナリで0.1で表すことができるため、精度を失う問題は発生せず、正常に見える
解決方法:コードに次の方法を追加します.
戻り値が浮動小数点数の各場所でこの関数を呼び出すと、toFixedの役割は四捨五入であり、パラメータはnビット小数を保持する
しかし、結果がバイナリで正確に表すことができる小数である場合、例えば0.5はバイナリで0.1で表すことができるため、精度を失う問題は発生せず、正常に見える
解決方法:コードに次の方法を追加します.
//
function intToFloat(val){
return new Number(val).toFixed(2);
}
戻り値が浮動小数点数の各場所でこの関数を呼び出すと、toFixedの役割は四捨五入であり、パラメータはnビット小数を保持する
intToFloat(float1-float2);