Nie umiem dokonać konwersji typu zmiennej.

Nie umiem dokonać konwersji typu zmiennej.
Dawid Dobrzeniecki
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
0

Witam, potrzebuję przekonwenterować typ zmiennej z string (chyba taki domyślny typ ma listbox) na decimala aby wykonać mnożenie na zmiennych. Tylko, że nie potrafię. Udało mi się spłodzić coś takiego : decimal b = listBox1.SelectedItem = Convert.ToDecimal; Program ma na celu doliczanie podatku wyrażonego w procentach do wyboru jest kilka z listboxa po czym wyświetlić to w polu na dole. Co z takim fantem zrobić ?

Zdjęcia : https://static.4programmers.net/uploads/attachment/5a/5a374d21e9f0f.png
https://static.4programmers.net/uploads/attachment/5a/5a374d9e679c4.png

DE
  • Rejestracja: dni
  • Ostatnio: dni
0

W treści błędu masz podpowiedź ("Czy chcesz wywołać metodę?"). Powinno to wyglądać tak:

Kopiuj
decimal b = Convert.ToDecimal(listBox1.SelectedItem);

Przy czym jeżeli do tej listy dodasz coś co się nie konwertuje na decimal to otrzymasz wyjątek. Poczytaj o decimal.TryParse.

atmal
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 913
2

ToDecimal() to metoda w klasie Convert która zwraca decimal i jako argument przyjmuje string.

Czyli Twój kod powinien wyglądać tak

Kopiuj
decimal someNumber = Convert.ToDecimal(listBox1.SelectedItem.Text);

albo

Kopiuj
decimal someNumber = decimal.Parse(listBox1.SelectedItem.Text);

Jest jeszcze możliwość zabezpieczenia się przed wyjątkami (jeżeli np. spróbujesz przekonwertować literę A na liczbę):

Kopiuj
decimal someNumber;

if(!decimal.TryParse(listBox1.SelectedItem.Text, out someNumber)
{
	// Wyświetl komunikat o błędzie.
}

Poza tym używaj sensownych nazw zmiennych. Jeżeli komuś przyjdzie analiza Twojego kodu to nie będzie mu się chciało odkodowywać nazw takich jak d, y czy mojaZmienna2.

Dawid Dobrzeniecki
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
0

Że tak powiem bywało lepiej, program się kompiluję lecz wywala błąd przy próbie obliczenia. screenshot-20171218150403.png

  • Rejestracja: dni
  • Ostatnio: dni
0

Arykuły typu jak zacząć naukę programowania albo coś. Brakuje Tobie podstaw podstaw podstaw.

atmal
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 913
0

Dlatego że kolega źle Ci podpowiedział. SelectedItem to nie string więc albo musisz użyć

Kopiuj
listBox1.SelectedItem.Text;

albo

Kopiuj
listBox1.SelectedItem.ToString();
Dawid Dobrzeniecki
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
0

Jestem prostytutka debilem. @dexiu miał rację wywalało wyjątek bo użyłem kropki zamiast przecinka. Zapisałem 0.23 zamiast 0,23 i wywalało błąd bo to nie liczba :)

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.