2010-07-02 27 views
6

Estoy usando C#, cada vez que inserto 3 decimales, el número se redondea, p.¿Cómo puedo evitar los decimales de redondeo?

1,538

rondas

a 1,54

I quieren que el número sea como es, por ejemplo, 1.53 (con dos decimales solo sin redondeos).

¿Cómo puedo hacerlo?

+6

Es difícil responder a su pregunta sin más información. ¿Dónde estás "insertando" los lugares decimales y cómo lo estás imprimiendo? Lo más probable es que el número se haya almacenado correctamente, pero de la forma en que lo está imprimiendo, solo aparecen dos decimales. – casablanca

+2

Math.Truncate() podría ayudarte aquí, pero necesitamos más información. – CrimsonX

+2

Esto definitivamente necesita más información, como por ejemplo el fragmento de código que está produciendo los resultados enumerados. –

Respuesta

6

creo que desea utilizar Math.Truncate()

float number = 1.538 
number = Math.Truncate(number * 100)/100; 

Truncar desgajará el bit final. Sin embargo, tenga en cuenta que tenga cuidado con los números negativos.

Depende de si siempre quiere redondear hacia 0, o simplemente cortar el extremo, Math.Floor redondeará siempre hacia el infinito negativo. Aquí está a post on the difference entre los dos.

3

Enlace encontrado this que proporciona un buen fragmento de código que le permite especificar el número de decimales que desea que Math.Round() permita.

Básicamente se trata de esto: -

public static double Floor(this double d, int decimals) { 
    return Math.Floor(d * Math.Pow(10, decimals))/Math.Pow(10, decimals); 
} 
Cuestiones relacionadas