С этой функцией:
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
}
Чтобы видеть различие между двумя целыми числами она 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()
.
Это 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);