• 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

Object Storage Arubacloud
0 głosów
278 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,320 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 (253,340 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 378 wizyt
pytanie zadane 3 marca 2018 w C# przez Oskar Filippoto Początkujący (470 p.)
0 głosów
2 odpowiedzi 435 wizyt
pytanie zadane 22 grudnia 2021 w C# przez Code_ Użytkownik (520 p.)

92,576 zapytań

141,426 odpowiedzi

319,651 komentarzy

61,961 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...