如
12.19888 => 12.19
12 => 12.00
Math._trunc = [
(num, dig) => { // 字符串模拟
const [ int, dec ] = (num + ".").toString().split(".")
return int + "." + (dec + "0".repeat(dig)).substring(0, dig)
},
(num, dig) => { // 正常解法
const pow = 10 ** dig
return (Math.trunc(num * pow) / pow).toFixed(dig)
},
(num, dig) => { // 干掉四舍五入
const res = num.toFixed(dig)
return (num * 10 ** dig * 10 % 10 >= 5) ? (res - 0.1 ** dig).toString() : res
}
][ parseInt(Math.random() * 10) % 3 ]
Number.prototype.trunc = function (dig = 2, str) {
const s = Math._trunc(this, dig)
return str ? s : + s
}
(12).trunc(2) // 12
(12.9888).trunc(2) // 12.98
(12).trunc(2, true) // "12.00"
str.toString().includes(".")?getResult(str.toString()):str+".00";
function getResult(str){
return str.split(".")[1].length>1?str.substring(0,str.length-2 ):str+"0";
}
1、先把数值转为小数形式,并补充到4位小数
2、使用substr截取要的个数即可
var num = 12.99999999;
num = parseFloat(num).toString().split('.');
var numInt = num[0];
var numDec = num[1];
var target = `${numInt}.${numDec ? numDec.substr(0,2) : '00'}`;
console.log(target);
先弄成整数转成数组,数组倒数第三位加个‘.’转成字符串就好了
let num=12.12378;
let arr=parseInt(num*100).toString().split('')
arr.splice(-2,0,'.')
let str=arr.join('')
8 回答5.5k 阅读✓ 已解决
9 回答8.6k 阅读
6 回答4.3k 阅读✓ 已解决
5 回答3.3k 阅读✓ 已解决
6 回答2.9k 阅读
3 回答9.8k 阅读✓ 已解决
4 回答7.7k 阅读✓ 已解决
在JS中数字12.00和12是相同的值,因为不区分整数小数。所以保留2位小数只能是转为字符串形式表达。