我经常需要在javascript调试期间将数字记录到控制台,但我不需要所有小数位。
console.log("PI is", Math.PI); // PI is 3.141592653589793
如何覆盖console.log以始终格式化带有2位小数的数字?
注意:覆盖Number.prototype.toString()
无法达到此目的。
答案 0 :(得分:2)
覆盖内置的东西是一个非常糟糕的主意。可以编写自己的小函数作为快捷方式:
const log = (...args)=> console.log(...args.map(el =>
typeof el === "number"? Number(el.toFixed(2)) : el
));
log("Math.PI is ", Math.PI);
答案 1 :(得分:1)
你可以选择console.log
的猴子补丁,这通常是不可取的。
void function () {
var log = console.log;
console.log = function () {
log.apply(log, Array.prototype.map.call(arguments, function (a) {
return typeof a === 'number'
? +a.toFixed(2)
: a;
}));
};
}();
console.log("PI is", Math.PI); // PI is 3.14
console.log("A third is", 1/3); // A third is 0.33
答案 2 :(得分:0)
制作一个易于输入和格式化数字的快捷方式功能:
const dp = function() {
let args = [];
for (let a in arguments) args.push(typeof arguments[a] == "number"?arguments[a].toFixed(2):arguments[a])
console.log.apply(console, args);
}
给你:
dp(" PI是",Math.PI); // PI为3.14