4 回答

TA贡献1805条经验 获得超9个赞
如果您是因为需要打印/显示一个值而这样做,那么我们就不必停留在数字领域:将其转换为字符串,然后将其切碎:
let nums = 1.12346;
// take advantage of the fact that
// bit operations cause 32 bit integer conversion
let intPart = (nums|0);
// then get a number that is _always_ 0.something:
let fraction = nums - intPart ;
// and just cut that off at the known distance.
let chopped = `${fraction}`.substring(2,6);
// then put the integer part back in front.
let finalString = `${intpart}.${chopped}`;
当然,如果您不是为了演示而这样做,则可能应该首先回答“为什么您认为需要这样做”(因为它会使涉及该数字的后续数学无效)的问题就应该首先回答,因为帮助您做错了事是并没有真正的帮助,反而使情况变得更糟。

TA贡献1848条经验 获得超6个赞
这是与如何舍入小数点后两位数字相同的问题?。您只需要对其他小数位进行调整。
Math.floor(1.12346 * 10000) / 10000
console.log(Math.floor(1.12346 * 10000) / 10000);
如果希望将此作为可重用的函数,则可以执行以下操作:
function MathRound (number, digits) {
var adjust = Math.pow(10, digits); // or 10 ** digits if you don't need to target IE
return Math.floor(number * adjust) / adjust;
}
console.log(MathRound(1.12346, 4));

TA贡献1790条经验 获得超9个赞
我认为这可以解决问题。从本质上纠正上舍入。
var nums = 1.12346;
nums = MathRound(nums, 4);
console.log(nums);
function MathRound(num, nrdecimals) {
let n = num.toFixed(nrdecimals);
return (n > num) ? n-(1/(Math.pow(10,nrdecimals))) : n;
}

TA贡献1828条经验 获得超4个赞
var num = 1.2323232;
converted_num = num.toFixed(2); //upto 2 precision points
o/p : "1.23"
To get the float num :
converted_num = parseFloat(num.toFixed(2));
o/p : 1.23
添加回答
举报