Quiero redondear un número al 0.5 más cercano. No todos los factores de 0.5 , solo los 0.5 s.
Por ejemplo, 0.5, 1.5, 2.5, -1.5, -2.5 . NO 1, 1.5, 2, 2.5 .
Me estoy confundiendo solo explicándolo, así que aquí hay algunos ejemplos de resultados esperados.
0.678 => 0.5 0.999 => 0.5 1.265 => 1.5 -2.74 => -2.5 -19.2 => -19.5He probado el siguiente código sin suerte,
let x = 1.296; let y = Math.round(x); let z = y + Math.sign(y) * .5; // 1.5 (Correct!) let x = -2.6; let y = Math.round(x); let z = y + Math.sign(y) * .5; // -3.5 (WRONG, should be -2.5)El código tiene sentido en mi cabeza, pero no funciona para números negativos. ¿Qué me estoy perdiendo que haría que esto funcione?
function getValue (a){ var lowerNumber = Math.floor(a); console.log(lowerNumber +0.5); } getValue(0.678); getValue(0.999); getValue(1.265); getValue(-2.74); getValue(-19.2);parece que quieres un número completo más bajo + 0.5;
Primero, puede redondear a enteros por
let x = 1.296; let y = Math.round(x);Luego, puedes restar 0.5 primero, luego redondear y luego sumar 0.5
let x = 1.296; let y = Math.round(x-0.5); let z = y + 0.5;Puedes probar esta lógica:
0.5 con factor y sumalo a decimal var data = [ 0.678, -0.678, 0.999, 1.265, -2.74, -19.2 ] const output = data.map((num) => { const decimal = parseInt(num) const factor = num < 0 ? -1 : 1; return decimal + (0.5 * factor) }) console.log(output)