Mam numer typu double. double a = 12.00 muszę zrobić to jako 12 poprzez usunięcie .00Jak usunąć część dziesiętną z numeru w C#
Proszę mi pomóc
Mam numer typu double. double a = 12.00 muszę zrobić to jako 12 poprzez usunięcie .00Jak usunąć część dziesiętną z numeru w C#
Proszę mi pomóc
Zastosowanie Math.Round
int d = (int) Math.Round(a, 0);
No 12
i 12.00
mają dokładnie taką samą reprezentację jako double
wartości. Czy próbujesz skończyć z double
lub czymś innym? (Na przykład, można rzutować na int
, jeśli byli przekonani wartość byłaby we właściwym zakresie, a jeśli efekt obcięcia to, co chcesz.)
Możecie zajrzeć do tych metod zbyt:
Math.Floor
Math.Ceiling
Math.Round
(z wariacjami na jak obsługiwać punkty środkowe)Math.Truncate
Cześć dzięki za twoją sugestię. Mam numer, który ma wartość jako 12,00. Chcę zrobić to jako tylko 12. Chcę usunąć .00.Ale nie jestem w stanie zrobić, ponieważ otrzymuję 12.0 z moim kodem re = Convert.ToDouble (txtModifedTotalAmount.Text.Trim(), CultureInfo.InvariantCulture); if (re - Math.Truncate (re) == 0.00) re = Math.Truncate (re); – Divya
@Divya: Są one jednak tej samej wartości - 12, 12,0, 12,00, 12,00000 będą miały taką samą reprezentację jak wartości "podwójne". Jeśli masz na myśli, że wyświetla się jako "12.0", gdy formatujesz go jako ciąg znaków, to jest inna sprawa - i po prostu część formatowania ciągów znaków. Lub jeśli zawsze otrzymasz liczbę całkowitą i chcesz tylko * traktować * jako liczbę całkowitą, po prostu rzuć na 'int' lub' long'. –
Mam w bazie danych sql 'decimal (18,3)' z ** wartości wejściowych **: 1.000, 11.124, 127.414, 1377.147, ** Oczekiwany wynik: ** 1, 11, 127, 1377, widzisz, że muszę usunąć skalę po przecinku, muszę zachować ostrożność, aby móc wykonywać obliczenia za pomocą 'int', więc powinno mogę rzucić na 'int' lub użyć' Math.Round' lub podzielić go za pomocą ciągu? – stom
Jeśli po prostu potrzebujesz części całkowitej podwójnej, użyj jawnego rzutowania do int.
int number = (int) a;
Można użyć Convert.ToInt32 Method (Double), ale to będzie zaokrąglić liczbę do najbliższej liczby całkowitej.
wartość, zaokrąglona do najbliższej 32-bitowej liczby całkowitej ze znakiem. Jeśli wartość wynosi w połowie drogi między dwiema liczbami całkowitymi, zwracana jest liczba parzysta; że jest 4,5 przekształca się w 4 i 5.5 jest przekształcany do 6.
czy zwracasz uwagę na ** błąd zaokrągleń ** ?? –
umm co "Błąd zaokrąglania"? nie byłoby zaokrąglania w '(int) a;' * (pierwsza część) *, zaokrąglenie w 'Convert.ToInt32' nie jest błędem zaokrąglonym, zamiast tego jest domyślnym [zaokrągleniem bankiera] (http://stackoverflow.com/questions/311696/why-does-net-use-bankers-rounding-as-default) – Habib
'float f = 1,4f; int truncated = (int) ((f- (int) f) * 100); "Więc, jakie jest twoje oczekiwanie na zmienną' ścięty'? ** 40 **? Nop, to 39. Z powodu ** błędu zaokrągleń ** –
Zastosowanie Decimal.Truncate
usuwa części ułamkowej od miejsca po przecinku.
o to sztuczka
a = double.Parse(a.ToString().Split(',')[0])
Podwójny zaokrąglony będzie nadal daje .00. Zamiast tego, jeśli chcesz mieć tylko 12, powinieneś spróbować rzucić to na int, aby pozbyć się części dziesiętnej! Rozwiązanie Look @ Habib dla wyraźnej obsady! – Nauman
Gdzie chcesz "zrobić 12"? 'a.ToString()'? –
http://stackoverflow.com/questions/4525854/remove-trailing-zeros może to ci pomoże. –