1. ホーム
  2. javascript

[解決済み] javascriptで小数を切り捨てる(丸めずに)。

2022-10-16 01:02:36

質問

小数を小数点以下まで切り捨てたい。このようなものです。

5.467   -> 5.46  
985.943 -> 985.94

toFixed(2) はほぼ正しいことをしますが、値を四捨五入してしまいます。私は値が四捨五入される必要はありません。これがjavascriptで可能であることを望みます。

どのように解決するのですか?

更新 :

結局のところ、丸め誤魔化しても、丸め誤魔化しても、丸め誤魔化しても、丸め誤魔化しても、丸め誤魔化しても、丸め誤魔化しても。それゆえ、この問題は数字を正確に10進数で表現することで攻略すべきなのです。

Number.prototype.toFixedDown = function(digits) {
    var re = new RegExp("(\\d+\\.\\d{" + digits + "})(\\d)"),
        m = this.toString().match(re);
    return m ? parseFloat(m[1]) : this.valueOf();
};

[   5.467.toFixedDown(2),
    985.943.toFixedDown(2),
    17.56.toFixedDown(2),
    (0).toFixedDown(1),
    1.11.toFixedDown(1) + 22];

// [5.46, 985.94, 17.56, 0, 23.1]

他の人のコンパイルに基づく、古いエラーの起こりやすい解決策。

Number.prototype.toFixedDown = function(digits) {
  var n = this - Math.pow(10, -digits)/2;
  n += n / Math.pow(2, 53); // added 1360765523: 17.56.toFixedDown(2) === "17.56"
  return n.toFixed(digits);
}