JSを書き直して小数点を保留します.
15519 ワード
なぜJavaScriptの最後に行く方法を書くのですか?ネット上には「JSは小数点以下を保留して後尾法に進みます.四捨五入法は足りないですか?」答:ネットで探したあのコードはしばらくの時間を経て、jsの浮動小数点の計算が不正確であることを発見しました.例えば、39.8を小数点2桁を保留して、意外にも39.79になりました.他の人が掘った穴に落ちないように、新人が穴に入らないように、JavaScriptの切り方を書き換えることにしました.不備なところがあれば、コメントエリアで指摘してください.
記事の目次去尾法 進一法 四捨五入法 .気が狂うほど伝わって久しい去尾法を批判する .参照文献 びりょう法
これは私のオリジナルの方法です.文字列を返します.不備があれば、コメントエリアで指摘してください.
ネットワークをコピーします.足りないところがあれば、ご指摘ください.
私はtoFixed(num)が使いやすいと思います.注意:数字.toFiexed(小数位)は文字列を返します.
toFixed
[1]JSは小数点以下を保持し、法四捨五入法[DB|OL]を制定する.https://www.cnblogs.com/nbgzc/p/5261015.html
記事の目次
これは私のオリジナルの方法です.文字列を返します.不備があれば、コメントエリアで指摘してください.
//
Number.prototype.toFloor = function (num) {
if (num < 0) {
return this;
}
let nnum = Number.parseFloat(this);
let str = nnum.toString();
let arr = str.split(".");
let strZ = arr[0];//arr[0] ,arr[1]
let strX = ""; //
if (arr.length > 1) {//
if (num > 0) {
if (arr[1].length >= num) {// ,
strX = arr[1].substr(0, num);
} else {// ,
let zeroArr = [];
for (let i = 0; i < num - arr[1].length; i++) {
zeroArr.push(0);
}
strX = arr[1].toString() + zeroArr.join("");
}
strX = "." + strX;
}
} else {//
if (num > 0) {
let zeroArr = [];
for (let i = 0; i < num; i++) {
zeroArr.push(0);
}
strX = "." + zeroArr.join("");
}
}
let result = strZ + "" + strX;
return result;
};
進一法ネットワークをコピーします.足りないところがあれば、ご指摘ください.
//
Number.prototype.toCeil = function (num) {
return Math.ceil(this * Math.pow(10, num)) / Math.pow(10, num);
};
四捨五入法私はtoFixed(num)が使いやすいと思います.注意:数字.toFiexed(小数位)は文字列を返します.
toFixed
1.235.toFixed(2) = 1.23
1.2350001.toFixed(2) = 1.24
ネットワークのコピー//
Number.prototype.toRound = function (num) {
return Math.round(this * Math.pow(10, num)) / Math.pow(10, num);
};
狂気じみたやり方を批判する//
Number.prototype.toFloor = function (num) {
return Math.floor(this * Math.pow(10, num)) / Math.pow(10, num);
};
//例を挙げると、39.8は2桁の小数を保持します.Math.floor(39.8 * Math.pow(10, 2)) / Math.pow(10, 2); //39.79
Math.floor(38.8 * Math.pow(10, 2)) / Math.pow(10, 2); //38.79
//39.80 * 100 = 3979.9999999999995
参考文献[1]JSは小数点以下を保持し、法四捨五入法[DB|OL]を制定する.https://www.cnblogs.com/nbgzc/p/5261015.html