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);