如何舍入 javascript 中的小数
How to round down decimal number in javascript
我有这个十进制数:1.12346
我现在只想保留 4 位小数,但我想向下舍入,这样它就会 return:1.1234。现在它 returns: 1.1235 这是错误的。
有效。我想要最后 2 个数字:“46”向下舍入为“4”而不是向上舍入为“5”
这怎么可能?
var nums = 1.12346;
nums = MathRound(nums, 4);
console.log(nums);
function MathRound(num, nrdecimals) {
return num.toFixed(nrdecimals);
}
如果你这样做是因为你需要 print/show 一个值,那么我们就不需要留在数字领域:把它变成一个字符串,然后把它切碎:
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}`;
当然,如果您不是为了演示而这样做,那么应该首先回答问题"why do you think you need to do this"(因为它会使涉及该数字的后续数学计算无效) ,因为帮助你做错事并不是真正的帮助,而是让事情变得更糟。
此问题与 相同。您只需要对额外的小数位进行调整。
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));
我认为这会成功。
从本质上纠正四舍五入。
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;
}
var nums = 1.12346;
var dec = 10E3;
var intnums = Math.floor(nums * dec);
var trim = intnums / dec;
console.log(trim);
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
我有这个十进制数:1.12346
我现在只想保留 4 位小数,但我想向下舍入,这样它就会 return:1.1234。现在它 returns: 1.1235 这是错误的。
有效。我想要最后 2 个数字:“46”向下舍入为“4”而不是向上舍入为“5”
这怎么可能?
var nums = 1.12346;
nums = MathRound(nums, 4);
console.log(nums);
function MathRound(num, nrdecimals) {
return num.toFixed(nrdecimals);
}
如果你这样做是因为你需要 print/show 一个值,那么我们就不需要留在数字领域:把它变成一个字符串,然后把它切碎:
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}`;
当然,如果您不是为了演示而这样做,那么应该首先回答问题"why do you think you need to do this"(因为它会使涉及该数字的后续数学计算无效) ,因为帮助你做错事并不是真正的帮助,而是让事情变得更糟。
此问题与
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));
我认为这会成功。 从本质上纠正四舍五入。
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;
}
var nums = 1.12346;
var dec = 10E3;
var intnums = Math.floor(nums * dec);
var trim = intnums / dec;
console.log(trim);
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