2010-07-02 11 views
6

Używam C#, za każdym razem, gdy wstawię 3 miejsca dziesiętne, liczba zostanie zaokrąglona, ​​np.Jak zapobiegać zaokrąglaniu w ułamkach dziesiętnych?

1,538

rundy

do 1,54

że chce ten numer jak np 1.53 (do dwóch miejsc po przecinku tylko bez zaokrągleń).

Jak mogę to zrobić?

+6

Trudno odpowiedzieć na to pytanie bez więcej informacji. Gdzie wstawiasz miejsca dziesiętne i jak je drukujesz? Najprawdopodobniej numer jest zapisany poprawnie, ale w sposobie, w jaki go drukujesz, wyświetlane są tylko 2 miejsca dziesiętne. – casablanca

+2

Math.Truncate() może ci w tym pomóc, ale potrzebujemy więcej informacji. – CrimsonX

+2

To zdecydowanie wymaga więcej informacji, np. Powiedz fragment kodu, który wyświetla listę wyników. –

Odpowiedz

6

wierzę chcesz użyć Math.Truncate()

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

Obetnij będzie lop off bit końcowy. Należy jednak pamiętać, aby zachować ostrożność przy liczbach ujemnych.

To zależy od tego, czy zawsze chcesz zaokrąglić w stronę 0, czy po prostu odciąć koniec, Math.Floor będzie zawsze zaokrąglane w dół do ujemnej nieskończoności. Oto a post on the difference między tymi dwoma.

3

Znaleziono link this, który zawiera dobry fragment kodu umożliwiający podanie liczby miejsc po przecinku, które mają być dozwolone przez Math.Round().

Zasadniczo to w ten sposób: -

public static double Floor(this double d, int decimals) { 
    return Math.Floor(d * Math.Pow(10, decimals))/Math.Pow(10, decimals); 
} 
Powiązane problemy