Błędna liczba po wrzuceniu wyniku do kontrolki

Błędna liczba po wrzuceniu wyniku do kontrolki
bloniak91
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 93
0

Witam,
wykonuje polecenie :

Kopiuj
long suma = 0;
suma = ((24 * 60 * 60) / Convert.ToInt32(TB_Sek.Text)) * Convert.ToInt32(TB_Dni_Laczny_Czas.Text) * ilosc_znakow_rekordu; // np (24*60*60)/1 *(365*100)

Wyrzucam sobie wynik do kontrolki i otrzymuję liczbę:-1 141 367 295
pytanie: Czemu tak się dzieje? Czytam tutaj na forum, że "long - przyjmuje liczby całkowite z zakresu [–9,223,372,036,854,775,808 to 9,223,372,036,854,775,807]", a wygląda to tak jakby zmienna się przepełniała i liczyła i "przeskakiwała" na swoją najmniejszą wartość.

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
0

Zamiast tego dziwoląga użyj klasy TimeSpan i jednego z jej wielu konstruktorów.

DibbyDum
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Polska, Kraków
2

Bo liczysz na int-ach a wynik dopiero wstawiasz do zmiennej long.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.