2010-07-02 14 views
6

Sto usando C#, ogni volta che inserisco 3 posizioni decimali, il numero viene arrotondato per es.Come posso evitare i decimali dell'arrotondamento?

1,538

turni

a 1,54

voglio che il numero sia come è per esempio 1,53 (con due cifre decimali solo senza arrotondamenti).

Come posso farlo?

+6

E 'difficile rispondere alla tua domanda, senza ulteriori informazioni. Dove stai "inserendo" i decimali e come lo stai stampando? Molto probabilmente, il numero è stato memorizzato correttamente, ma il modo in cui lo stai stampando mostra solo 2 posizioni decimali. – casablanca

+2

Math.Truncate() potrebbe aiutarti in questo caso, ma abbiamo bisogno di maggiori informazioni. – CrimsonX

+2

Ciò richiede sicuramente più informazioni, come ad esempio il frammento di codice che sta producendo i risultati elencati. –

risposta

6

credo che si desidera utilizzare Math.Truncate()

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

Tronca si lop fuori il bit finale. Tuttavia, ricorda di fare attenzione ai numeri negativi.

Dipende se si desidera sempre arrotondare a 0, o semplicemente perdere la fine, Math.Floor arriverà sempre verso il basso all'infinito negativo. Ecco a post on the difference tra i due.

3

Trovato this collegamento che fornisce un buon snippet di codice per consentire di specificare il numero di decimali che si desidera inserire come consentito da Math.Round().

In sostanza è questo: -

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