Как округлить десятичное число в JavaScript - PullRequest
1 голос
/ 28 марта 2019

У меня есть это десятичное число: 1.12346

Теперь я хочу сохранить только 4 десятичных знака, но я хочу округлить, чтобы получилось: 1.1234. Теперь он возвращает: 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);
}

Ответы [ 4 ]

1 голос
/ 28 марта 2019

Это тот же вопрос, что и Как округлить десятичные дроби с номером 2? .Вам просто нужно внести поправки для дополнительных десятичных знаков.

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));
1 голос
/ 28 марта 2019

Я думаю, это поможет.По существу, исправление округления вверх.

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;
}
1 голос
/ 28 марта 2019

Если вы делаете это, потому что вам нужно напечатать / показать значение, тогда нам не нужно оставаться в числе цифр: превратите его в строку и нарежьте:

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}`;

Конечно, если вы не делаете это для презентации, на вопрос «почему, по вашему мнению, вам нужно это сделать» (потому что это делает недействительными последующие математические операции, связанные с этим числом), вероятно, следует ответить в первую очередь, потому чтопомогать вам делать что-то не то, что на самом деле помогает, а усугублять.

0 голосов
/ 28 марта 2019

var nums = 1.12346;
var dec = 10E3;
var intnums = Math.floor(nums * dec);
var trim = intnums / dec;
console.log(trim);
...