Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

399
Vistas
Compruebe si el valor es mayor o igual al 0,05 más bajo más cercano en JavaScript

Quiero verificar si un valor decimal es mayor o igual al valor más bajo de 0.05

Ejemplo

 Value | Expected Nearest 0.05 value 11.10 | 11.05 11.11 | 11.10 11.12 | 11.10 11.13 | 11.10 11.14 | 11.10 11.15 | 11.10

Intenté usar la fórmula

 parseFloat((Math.floor(value * 20) / 20).toFixed(2))

Pero falla para 11.10 y 11.15. Usando la fórmula anterior, obtengo el mismo resultado que el valor, pero los valores esperados son diferentes. ¿Qué fórmula debo usar para corregir los casos de prueba anteriores?

over 4 years ago · Santiago Trujillo
4 Respuestas
Responde la pregunta

0

Puede multiplicar los valores por 100 para eliminar temporalmente los dos puntos decimales necesarios, el número más cercano ahora se convierte en un múltiplo de 5, luego puede eliminar el resto de la división euclidiana por 5 y obtener lo que desea.

Y dado que un múltiplo exacto de 5 debe llevarse al valor inferior más cercano, puede eliminar condicionalmente un 5 cuando el resto es igual a 0.

La función de fórmula podría ser algo como:

 const f = (v) => (((Math.floor(v*100) - (Math.floor(v*100) % 5 || 5)) / 100).toFixed(2)); console.log('11.10', f(11.10)); console.log('11.11', f(11.11)); console.log('11.12', f(11.12)); console.log('11.13', f(11.13)); console.log('11.14', f(11.14)); console.log('11.15', f(11.15));

over 4 years ago · Santiago Trujillo Denunciar

0

Puede tomar una compensación y tomar un valor de piso múltiple.

 const format = f => Math.floor((f - 0.01) * 20) / 20; console.log([11.10, 11.11, 11.12, 11.13, 11.14, 11.15, 11.16, 11.17, 11.18, 11.19].map(format));
 .as-console-wrapper { max-height: 100% !important; top: 0; }

over 4 years ago · Santiago Trujillo Denunciar

0

Si mi manera es la más eficiente, no estoy seguro, pero así es como lo haría:

 var x = Math.floor(value * 100); var remainder = x % 5; if (remainder == 0) { // deal with dropping down the 11.10 to 11.05 remainder = 5 } var result = parseFloat((x - remainder) / 100).toFixed(2);

SIN EMBARGO, esto solo funciona para valores que tienen 2 decimales: para tener en cuenta el tercer decimal, debe modificarlo para:

 var x = value * 100; var remainder = x % 5; if (remainder == 0) { // deal with dropping down the 11.10 to 11.05 remainder = 5 } var result = parseFloat((x - remainder) / 100).toFixed(2);
over 4 years ago · Santiago Trujillo Denunciar

0

Lo que entiendo de su pregunta es que desea el valor más bajo más cercano y la respuesta debe ser menor que el valor en sí. Entonces, siendo n el número del que necesita el múltiplo más bajo y siendo v el valor, tal vez pueda intentar algo como:

 const nearestMultiple = (v) => (Math.floor((v - 0.001) /n) * n).toFixed(2);

La fórmula básica para encontrar un múltiplo sería Math.floor((v/n) * n) , pero para su caso único, no queremos que la función devuelva el número dado, por lo tanto, se resta 0.001.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda