2010-08-31 10 views

Respuesta

7

Necesita multiplicar por cien (para que los centavos sean los que se redondearán), redondee, luego divida por cien para obtener nuevamente el precio correcto en dólares.

var dollars = 0.075; // 0.075 dollars 
var cents = dollars * 100; // ... is 7.5 cents 
var roundedCents = Math.round(cents); // ... but should really be 8 cents 
var roundedPrice = roundedCents/100; // ... so it's 0.08 dollars in the end 
2

Usar Math.Round. Tomado de this artículo

var original=28.4531) 

// round "original" to two decimals 
var result = Math.round(original*100)/100; 
// returns 28.452) 

// round "original" to 1 decimal 
var result = Math.round(original*10)/10; 
// returns 28.53) 

// round 8.111111 to 3 decimals 
var result = Math.round(8.111111*1000)/1000; 
// returns 8.111 
4

Javascript tiene tres funciones de redondeo, todos los cuales son miembros del objeto Math: round (rondas arriba o hacia abajo, al entero más cercano), floor (redondea hacia abajo) y ceil (redondea) Desafortunadamente, los tres solo redondean al número entero más cercano. Sin embargo, puede multiplicar primero su cantidad en dólares (para obtener centavos) y luego usar ceil para redondear hasta el próximo centavo;

var money = 0.075; 
var pennies = money * 100; 
money = Math.ceil(pennies)/100; 
+0

debería ser 'Math.round' pero la idea es la misma. ¡Gracias! – mpen

+0

@Mark Su pregunta fue para redondear ...;) –

+0

Creo que pregunté cómo redondear * la mitad de centavos *, lo cual supongo que es un poco ambiguo para la mitad inferior;) – mpen

1
alert(0.755.toFixed(2)); 
+0

'0.075.toFija (2)' es '0.07', no' 0.08' como se solicitó. –

+0

Bien, eso está mal. Escribí mal mi código de prueba con 5 extra con FF 3.5.11 javascript: alerta ((0.075.toFixed (2)) + "\ n" + (0.0755.toFixed (2))); Rascándome la cabeza en este caso. lol – epascarello

+0

Muy extraño http://jsbin.com/uyiho3 Necesito ver lo que dice la especificación. :) – epascarello

Cuestiones relacionadas