Условный, чтобы знать, - ли переменная x большие, чем разы другая переменная

С этой функцией:

function test(){
  toReturn = 90;
  reference = 0;
  
  // haz cosas para lograr que reference sea igual a 90
}

После функции я хочу сделать условного такого простого как

if (toReturn !== reference){
     haz x
}

Чтобы просачиваться, когда функция test() ему не удается поместить ту же стоимость в reference что тот, который у него есть toReturn

Проблема состоит в том, что моя функция - немного халтура и никогда ей не удается поместить точно стоимость toReturn но он помещает что-то подобные 90.00005... и т.д., Но это для меня не имеет значение, он подает меня. Но тогда, если я помещаю toReturn !== referenceон идет выполнять всегда условного.

Я хочу, чтобы он только был выполнен, когда бук различие по крайней мере, 1 или больше (и не 0.1 например) между toReturn и reference. Как я это делаю?

if (hay una diferencia de al menos 1 entre toReturn y reference){
    haz x
}
3
задан 10.05.2019, 19:07
2 ответа

Чтобы видеть различие между двумя целыми числами она operaciГіn mГЎs простая он та divisiГіn.

Или же, a/b ты dirГЎ cuГЎntas разы состоит в больший, в чем b, но ты darГЎ десятичные.

Всегда ты можешь делать a/b > 1

Сказанными это, если то, что ты хочешь, является целым результатом начиная с десятичных, или sГіlo ты хочешь оставить себе целую часть целого числа можешь делать Math.floor(x)

я оставляю Тебе snippet с различными выборами, которые у тебя есть:

const timesBigger = (x, y) => x/y;

const trimDecimals = x => Math.floor(x);

const isTimesBigger = (num1, num2, times) => timesBigger(num1,num2) >= times;

const isEntirePartTimesBigger = (num1, num2, times) => trimDecimals(timesBigger(num1, num2)) >= times

const a = timesBigger(900, 16)
const b = trimDecimals(a);
const c = isTimesBigger(900, 16, 56);
const d = isEntirePartTimesBigger(900, 16, 56);

console.log(a, b, c, d);

Из этой формы ты мог бы делать любой из этих выборов:

  • toReturn/reference >= 1
  • isTimesBigger(toReturn, reference, 1)
  • isEntirePartTimesBigger(toReturn, reference, 1)

В конце концов две Гєltimas выборы - encapsulador первой, я рекомендую тебе sГіlo использовать первую, которая та mГЎs прямая и десятичные contarГЎn для нее evaluaciГіn.

Из всех форм, это sГіlo помогает тебе для 90.00001 и не для 89.999999, которые, как они прокомментировали в других ответах tambiГ©n, ты можешь делать округление относительно порядка вместо Math.floor().

4
ответ дан 02.12.2019, 02:44

Это tГ-пик терять precisiГіn заставлять делать операции в плавающей запятой. Если sГіlo тебя интересует целая часть, soluciГіn простая он состоит в том, чтобы округлять одну nГєmero:

let n = 90.0001005;
console.log(n);

if (Math.round(n) === 90) {
  console.log('Conseguido');
}

, Если ты хочешь смочь выбирать nГєmero десятичных, ты можешь делать что-то как:

function redondea(num, decimales) {
   let orden= (10**decimales) // añadimos un cero por cada decimal que queremos
   let n= Math.round (num * orden);
   return n/orden; //quitamos los ceros tras redondear
}

console.log(redondea(1/3,2));
console.log(redondea(90.12345,2) == 90.12);
2
ответ дан 02.12.2019, 02:44