• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wartość zmiennej 0,1 zamiast 0

Aruba Cloud - Virtual Private Server VPS
0 głosów
571 wizyt
pytanie zadane 27 października 2022 w C# przez JoannS Początkujący (250 p.)

Cześć,

Utknęłam na zadaniu, gdzie obliczona wartość zmiennej 10/100 wyświetla się 0, mimo, że w rzeczywistości powinno być 0,1. Co powinnam dodać do poniższego kodu?

int powierzchnia = 100, osoby 10;
double gestoscZaludnienia = osoby/powierzchnia;
Console.WriteLine(gestoscZaludnienia);

moim pomysłem było dopisanie do ostaniej linii {"0,1:F1}" jak ponieżej ale daje wyświetla tylko 0,0.

Console.WriteLine("{0,1:F1}", gestoscZaludnienia);

Z góry dziękuję za pomoc :)

3 odpowiedzi

+1 głos
odpowiedź 27 października 2022 przez tmar1212 Bywalec (2,600 p.)
Zadeklaruj też jako double powierzchnia lub osoby.
1
komentarz 27 października 2022 przez Oscar Nałogowiec (29,340 p.)
Akurat osoby (ludzie) są przeliczalne, więc int/long są odpowiednie. Natomiast powierzchnia to zdecydowanie liczba zmiennoprzecinkowa. Programując często należy odnosić się jednak do fizycznej rzeczywistości, a pisać grę w rzeczywistości wirtualnej.
+1 głos
odpowiedź 27 października 2022 przez VBService Ekspert (256,600 p.)

Możesz rzutować wynik z dzielenia do double

[ on-line ]

double gestoscZaludnienia = (double) osoby/powierzchnia;

 

+1 głos
odpowiedź 30 października 2022 przez Szabranigdo Obywatel (1,370 p.)

Dla głębszego zrozumienia tematu:

x = y / z;

Najpierw wykonywane jest dzielenie y / z. Jeśli obie te zmienne są typu int to wynik nie będzie zawierał miejsca po przecinku a tylko zaokrąglenie w dół - nie inaczej jak ucinane jest wszystko po liczbie całkowitej. Dopiero później następuje przypisanie do double. 

Dowody:

int pow = 100, os = 10;
            string wynik;
            wynik =  (pow / os).GetType().ToString();

            Console.WriteLine(wynik);

            Console.WriteLine();

            Console.WriteLine(100  /43);
            Console.WriteLine((double)100 / 43);

            Console.WriteLine();

            Console.WriteLine(100/34);
            Console.WriteLine((double)100/34);

 

Podobne pytania

0 głosów
2 odpowiedzi 463 wizyt
pytanie zadane 3 marca 2018 w C# przez Oskar Filippoto Początkujący (470 p.)
0 głosów
2 odpowiedzi 672 wizyt
pytanie zadane 22 grudnia 2021 w C# przez Code_ Użytkownik (520 p.)

93,337 zapytań

142,332 odpowiedzi

322,423 komentarzy

62,677 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...