我想格式化我的数字,总是显示2小数点后,四舍五入适用的地方。
例子:
number display
------ -------
1 1.00
1.341 1.34
1.345 1.35
我一直在用这个:
parseFloat(num).toFixed(2);
但是它把1显示为1,而不是1.00。
我想格式化我的数字,总是显示2小数点后,四舍五入适用的地方。
例子:
number display
------ -------
1 1.00
1.341 1.34
1.345 1.35
我一直在用这个:
parseFloat(num).toFixed(2);
但是它把1显示为1,而不是1.00。
当前回答
你在找地板吗?
变量数 = 1.42482; var num2 = 1; var fnum = Math.floor(num).toFixed(2); var fnum2 = Math.floor(num2).toFixed(2); console.log(fnum + “ 和 ” + fnum2);两个值均为 1.00
其他回答
你在找地板吗?
变量数 = 1.42482; var num2 = 1; var fnum = Math.floor(num).toFixed(2); var fnum2 = Math.floor(num2).toFixed(2); console.log(fnum + “ 和 ” + fnum2);两个值均为 1.00
用精度方法扩展数学对象
Object.defineProperty(数学、“精度”{ 值:函数(值,精度,类型){ var v = parseFloat(value) p = Math.max(precision,0)||0, T = type||'round'; 返回(数学[t] (v * Math.pow (p)) / Math.pow (p)) .toFixed (p); } }); console.log ( Math.precision(3.1,3), //四舍五入3位 Math.precision(0.12345,2,'ceil'), // ceil 2位数字 Math.precision(1.1) //整数 )
对于现代浏览器,使用toLocaleString:
var num = 1.345;
num.toLocaleString(undefined, { maximumFractionDigits: 2, minimumFractionDigits: 2 });
指定区域设置标记作为控制十进制分隔符的第一个参数。对于点,使用例如English U.S. locale:
num.toLocaleString("en-US", { maximumFractionDigits: 2, minimumFractionDigits: 2 });
这使:
1.35
大多数欧洲国家使用逗号作为小数分隔符,所以如果你使用瑞典/瑞典地区:
num.toLocaleString("sv-SE", { maximumFractionDigits: 2, minimumFractionDigits: 2 });
它会给:
1, 35
RegExp -替代方法
在输入时,你有字符串(因为你使用解析),所以我们可以通过只使用字符串操作和整数计算得到结果
let toFix2 = (n) = > n.replace (d / \(?) -(+)。\ \ \ \ d (d + 1) / (_), s, i、d (r) = {> 让k= (+r[0]>=5)+ +d - (r==5 && s=='-'); 返回s +(+i+(k>99)) + "。"(k +(> 99%) ? ? 9: 00”(k≥0 " k " + k)); }) / /测试 console.log toFix2(“1”)); console.log (toFix2 1.341”()); console.log (toFix2 1.345”()); console.log (toFix2 1.005”());
解释
s is sign, i is integer part, d are first two digits after dot, r are other digits (we use r[0] value to calc rounding) k contains information about last two digits (represented as integer number) if r[0] is >=5 then we add 1 to d - but in case when we have minus number (s=='-') and r is exact equal to 5 then in this case we substract 1 (for compatibility reasons - in same way Math.round works for minus numbers e.g Math.round(-1.5)==-1) after that if last two digits k are greater than 99 then we add one to integer part i
(Math.round(num * 100) / 100).toFixed(2);
现场演示
var num1 = “1”; document.getElementById('num1').innerHTML =(Math.round(num1 * 100) / 100).toFixed(2); var num2 = “1.341”; document.getElementById('num2').innerHTML =(Math.round(num2 * 100) / 100).toFixed(2); var num3 = “1.345”; document.getElementById('num3').innerHTML =(Math.round(num3 * 100) / 100).toFixed(2); 跨度 { 边框:1px 实心 #000; 边距:5px; 填充:5px; } <span id=“num1”></span> <span id=“num2”></span> <span id=“num3”></span>
注意,它将四舍五入到小数点后2位,因此输入1.346将返回1.35。