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

Jak konwertować zmienne typu int na float i odwrotnie?

VPS Starter Arubacloud
0 głosów
2,410 wizyt
pytanie zadane 23 marca 2020 w C# przez tonn204 Mądrala (7,440 p.)
Cześć mam problem, mianowicie chciałem konwertować zmienną float na int i odwrotnie i nie wiem jak to zrobić. Gdy próbuje używając metody wywala mi błąd. Jeżeli możecie podajcie jakiś sposób bo totalnie nie wiem jak to zrobić. Dzięki za wszystkie odpowiedzi.

2 odpowiedzi

0 głosów
odpowiedź 23 marca 2020 przez JakSky Stary wyjadacz (14,770 p.)

Poniższy tekst został skopiowany z https://stackoverflow.com/questions/21896580/convert-float-to-int

Po pierwsze, istnieją liczby całkowite i liczby zmiennoprzecinkowe. Liczby całkowite to np. 0, 1, -32, 42i 1337. Z drugiej strony, liczby zmiennoprzecinkowe mogą mieć część ułamkową: 0, 1, -32.1, 42.7i 123.456788. Konwertując liczby całkowite (int) i zmiennoprzecinkowe (float), możesz to zrobić:

int someInt = 42;

float someFloat = someInt; // 42.0f

Ale nie możesz tego zrobić:

float someFloat = 42.7f;

int someInt = someFloat; // ?

Powodem pierwszej konwersji jest to, że przekształcenie liczby całkowitej ( int) na liczbę zmiennoprzecinkową ( float) nie zmienia liczby. Jest to bezpieczna konwersja i dlatego może być dokonana w sposób dorozumiany . Powodem, dla którego druga konwersja jest niedozwolona, ​​jest to, że przekształcenie liczby zmiennoprzecinkowej (która może mieć część ułamkową) na liczbę całkowitą (która nigdy nie ma części ułamkowej) musi upuścić część ułamkową liczby, tj. Staje się inny numer. Nie jest to bezpieczne i dlatego można to zrobić tylko jawnie . Aby jawnie przekonwertować jeden typ liczby na inny, użyj rzutowania . To nawiasy przed liczbą z typem liczby, na którą chcesz ją przekonwertować.

float someFloat = 42.7f;

int someInt = (int)someFloat; // 42

Zauważ, że ułamkowa część liczby zmiennoprzecinkowej została porzucona. To tak, jakby zostało zaokrąglone w kierunku zera. Jeśli chcesz zaokrąglić liczbę zmiennoprzecinkową do najbliższej liczby całkowitej, użyj Math.Round.

float someFloat = 42.7f;

int someInt = (int)Math.Round(someFloat);

0 głosów
odpowiedź 23 marca 2020 przez adrian17 Ekspert (344,100 p.)

Int na float... trywialnie, to zwykła konwersja typów

int a = 7;
float b = a;

Można też bardziej explicit:

int a = 7;
float b = (int)a;

Float do inta analogicznie:

double c = 5.5;
int d = (int)c;

 

komentarz 23 marca 2020 przez JakSky Stary wyjadacz (14,770 p.)
Trzeba pamiętać o zaokrągleniu. W Twoim ostatnim przypadku zmienna d będzie mieć wartość 5 a powinna teoretycznie mieć 6.
komentarz 23 marca 2020 przez adrian17 Ekspert (344,100 p.)

a powinna

Zależy od użycia ;) Nie zawsze potrzebuję/chcę zaokrąglać.

komentarz 23 marca 2020 przez JakSky Stary wyjadacz (14,770 p.)
No tak, tu zgoda. Jeszcze można dodać temat konwersji ze string'a do np. int. String może przechowywać znacznie większą liczbę niż int, więc trzeba by taką operację odpowiednio obsłużyć w przypadku wyjątku.

Podobne pytania

0 głosów
2 odpowiedzi 948 wizyt
pytanie zadane 26 marca 2019 w C i C++ przez Marcinek69 Początkujący (450 p.)
0 głosów
2 odpowiedzi 158 wizyt
pytanie zadane 6 lipca 2016 w C# przez matilogias Obywatel (1,550 p.)
+1 głos
3 odpowiedzi 1,642 wizyt
pytanie zadane 5 stycznia 2021 w C# przez MateuszFisch Początkujący (250 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...