Как округлить десятичное число в JavaScript

Я предпочитаю, чтобы прослушиватели событий были развернуты модульной функцией, а не сценарием прослушивателя событий уровня document. Итак, мне нравится ниже. Обратите внимание: вы не можете переадресовать элемент с одним и тем же прослушивателем событий, поэтому не беспокойтесь о прикреплении слушателя более одного раза - только один палец.

var iterations = 4;
var button;
var body = document.querySelector("body");

for (var i = 0; i < iterations; i++) {
    button = document.createElement("button");
    button.classList.add("my-button");
    button.appendChild(document.createTextNode(i));
    button.addEventListener("click", myButtonWasClicked);
    body.appendChild(button);
}

function myButtonWasClicked(e) {
    console.log(e.target); //access to this specific button
}

1
задан Andreas 28 March 2019 в 00:03
поделиться

4 ответа

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

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}`;
[113 ] Конечно, если вы не делаете это для презентации, на вопрос «почему, по вашему мнению, вам нужно это сделать» (потому что это делает недействительными последующие математические операции, связанные с этим числом), вероятно, следует ответить в первую очередь, потому что помогать вам делать что-то не то, что на самом деле помогает, а усугублять.

0
ответ дан Mike 'Pomax' Kamermans 28 March 2019 в 00:03
поделиться

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

Math.floor(1.12346 * 10000) / 10000

console.log(Math.floor(1.12346 * 10000) / 10000);

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

[ 1113]
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));

0
ответ дан caseyjhol 28 March 2019 в 00:03
поделиться

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

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

0
ответ дан Bibberty 28 March 2019 в 00:03
поделиться

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

0
ответ дан rafaelcastrocouto 28 March 2019 в 00:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: