我想格式化我的数字,总是显示2小数点后,四舍五入适用的地方。

例子:

number     display
------     -------
1          1.00
1.341      1.34
1.345      1.35

我一直在用这个:

parseFloat(num).toFixed(2);

但是它把1显示为1,而不是1.00。


当前回答

为了获得最精确的舍入,创建这个函数并使用它舍入到小数点后2位:

功能轮(价值,十进制)( return编号(数学。(价值+ e +十进制)+ e-' +十进制)。 ) log(“seeked to”+ round(1,005,2));

> 1.01

感谢Razu、这篇文章和MDN的数学。圆的参考。

其他回答

你可以试试下面的代码:

    function FormatNumber(number, numberOfDigits = 2) {
        try {
            return new Intl.NumberFormat('en-US').format(parseFloat(number).toFixed(numberOfDigits));
        } catch (error) {
            return 0;
        }
    }

    var test1 = FormatNumber('1000000.4444');
    alert(test1); // 1,000,000.44

    var test2 = FormatNumber(100000000000.55555555, 4);
    alert(test2); // 100,000,000,000.5556

你可以使用numeric .js。

numeral(1.341).format('0.00') // 1.34
numeral(1.345).format('0.00') // 1.35

如果value = 1.005,此回答将失败。

作为一个更好的解决方案,可以使用指数表示的数字来避免舍入问题:

Number(Math.round(1.005+'e2')+'e-2'); // 1.01

@Kon和原作者建议的更简洁的代码:

Number(Math.round(parseFloat(value + 'e' + decimalPlaces)) + 'e-' + decimalPlaces)

你可以在末尾加上toFixed()以保留小数点,例如:1.00,但注意它将返回字符串。

Number(Math.round(parseFloat(value + 'e' + decimalPlaces)) + 'e-' + decimalPlaces).toFixed(decimalPlaces)

来源:JavaScript中的四舍五入小数

var num = new Number(14.12); console.log (num.toPrecision (2));/ /输出14 console.log (num.toPrecision (3));/ /输出14.1 console.log (num.toPrecision (4));/ /输出14.12 console.log (num.toPrecision (5));/ /输出14.120

<script src="https://code.jquery.com/jquery-3.6.0.js" integrity="sha256-H+K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.16/jquery.mask.min.js" integrity="sha512-pHVGpX7F/27yZ0ISY+VVjyULApbDlD0/X0rgGbTqCE7WFW5MezNTWG/dnhtbBuICzsd0WQPgpE4REBLv+UqChw==" crossorigin="anonymous"></script>


<input type="text" class = 'item_price' name="price" min="1.00" placeholder="Enter Price" value="{{ old('price') }}" step="">

<script> 
$(document).ready(function() {
    $('.item_price').mask('00000.00', { reverse: true });
});
</script>