JavaScript 四捨五入、无条件捨去、无条件进位
JavaScript 是广泛必威体育手机客户端上使用的程式语言,可以对数字进行各种运算和操作。其中对数字进行四捨五入、无条件捨去、无条件进位等处理都属于 Math 物件的静态方法。可以在运算数字后面加上 .toFixed() 的方法以字串的形式回传指定小数位数的近似值,并且採用四捨六入五留双的规则。
Math.round() 四捨五入
Math.round(3.14) // 3
Math.round(5.49999) // 5
Math.round(5.5) // 6
Math.round("5.50001") // 6
Math.round(-5.49999) // -5
Math.round(-5.5) // -5
Math.round(-5.50001) // -6
Math.round(18.62645 * 10) / 10 // 18.6
Math.round(18.62645 * 100) / 100 // 18.63
Math.round(18.62645 * 1000) / 1000 // 18.626
Math.floor() 最大整数
返回小于或等于给定数字,取小于这个数的最大整数。
Math.floor(3.14) // 3
Math.floor(5.4) // 5
Math.floor(-5.4) // -6
Math.floor("-5.5") // -6
Math.ceil() 最小整数
返回大于或等于给定数字,取大于这个数的最小整数。
Math.ceil(3.14) // 4
Math.ceil(5.4) // 6
Math.ceil(-5.4) // -5
Math.ceil("-5.5") // -5
JavaScript 四捨五入、线上测试
4
Math.round(n)Math.floor(n)Math.ceil(n)
Math.trunc() 去掉小数部分
将数字的小数部分去掉,只保留整数部分。传回值:给定数字的整数部分。ECMA-262
Math.trunc(13.37) // 13
Math.trunc(42.84) // 42
Math.trunc(0.123) // 0
Math.trunc(-0.123) // -0
Math.trunc("-1.123") // -1
Polyfill
if (!Math.trunc) {
Math.trunc = function (v) {
v = +v;
return (v - v % 1) || (!isFinite(v) || v === 0 ? v : v < 0 ? -0 : 0);
};
}
带小数的四捨五入
let roundDecimal = function (val, precision) {
return Math.round(Math.round(val * Math.pow(10, (precision || 0) + 1)) / 10) / Math.pow(10, (precision || 0));
}
roundDecimal(18.62645, 2) // 18.63
roundDecimal(18.62645, 3) // 18.626
roundDecimal(18.62645, 4) // 18.6265
数字千分位
function FormatNumber(n) {
n += "";
let arr = n.split(".");
let re = /(\d{1,3})(?=(\d{3})+$)/g;
return arr[0].replace(re, "$1,") + (arr.length == 2 ? "." + arr[1] : "");
}
JavaScript 数字千分位、线上测试
798,736.325
Examination
Number.prototype.toFixed
以字符串返回希望的格式,精确到「小数点」后的数字。依格式数字会四捨五入,且小数部分依指定的长度将用零填充。
let numObj = 12345.6789
numObj.toFixed() // '12346' 四捨五入,无小数部分
numObj.toFixed(1) // '12345.7' 四捨五入
numObj.toFixed(6) // '12345.678900' 用零填充
(36).toFixed(6) // '36.000000'
(1200).toFixed(6) // '1200.000000'
(580.5).toFixed(6) // '580.500000'
let numObj = 5.123456;
numObj.toFixed() // 5 (差异)
numObj.toFixed(1) // 5.1
numObj.toFixed(2) // 5.12
numObj.toFixed(3) // 5.123
numObj.toFixed(4) // 5.1235
numObj.toPrecision() // 5.123456 (差异)
numObj.toPrecision(1) // 5
numObj.toPrecision(2) // 5.1
numObj.toPrecision(3) // 5.12
numObj.toPrecision(4) // 5.123
带小数的对整齐
如果输出多个带数位的值,且小数位长度不同列于一容器内可用 .toFixed 用零填充来处理。
function financial(x) {
return Number.parseFloat(x).toFixed(3);
}
526.120
36.784
162.500
3.416
数学函数
Math.abs() 绝对值
绝对值(正值)取参数的绝对值。参数可以是数值亦可以是一个「数值」的字串。
Math.round(3.14) // 3
Math.abs("-12") // 12
Math.abs("-0012") // 12
Math.abs(-12) // 12
Math.abs("00.032") // 0.032
Math.abs("24-5") // NaN
Math.abs("Hello") // NaN
判断指定的数字是正数,负数还是零。
Math.sign(-1); // -1
Math.sign(-1.5); // -1
Math.sign(-0); // 0
Math.sign(0); // 0
Math.sign(1); // 1
Math.sign(1.5); // 1
Visual Basic 四捨五入计算
用 Visual Basic 来进行四捨五入的计算,四捨五入 Rounding 在 VB 要做到四捨五入的功能应该用 Format 函数用 CInt 或 CLng 都只能取到整数部分,而用 Format 函数可以取到指定的小数位数。