Vajíčková mánie Vajíčková mánie
Od 15. do 21.4. slevy 20 až 80% v sekci C/C++. Když ne teď, tak kdy?
Vyšlehej si extra vědomosti! Až 100% bodů na prémiový obsah zdarma! Více zde

Diskuze: String na Float

Aktivity (4)
Avatar
Dominik
Člen
Avatar
Dominik:31. ledna 19:39

Ahoj, chtěl bych jen pomoci s jednou asi docela jednoduchou záležitostí. Nejsem v programování žádný expert, takže bych byl rád, když by jste mi všechno co dělám špatně napsali popř. vysvětlili.

Mám proměnnou typu float a chci změnit její hodnotu, ale chci ji darovat hodnotu typu string (je to text v ComboBoxu). Jak tedy převést text z toho comboboxu na float?

Zkusil jsem: zkoušel jsem:

float proměnná = float.Parse(com­bobox.Text);

což mi neukazovalo žádnou chybu, ale poté co jsem zapnul program začalo mi to psát že "Vstupní řetězec nemá správný formát"...

pak jsem tedy zkusil ze zoufalosti toto:

float proměnná = (float)combobox­.Text;

….Ale toto už mi ukazovalo chybu že "Typ string nejde převést na typ float".
A já si teď upřímně nevím rady....

Chci docílit: Jak už jsem psal můj "úkol" je dát proměnný typu float hodnotu typu string…. V tom comboboxu jsou desetinný čísla a já chci, aby když uživatel zvolí nějaké desetinné číslo a pak klikne na tlačítko tak do mé proměnné se uloží hodnota a to bude právě to desetinné číslo...

 
Odpovědět 31. ledna 19:39
Avatar
Pavel
Člen
Avatar
Pavel:31. ledna 21:23

Ahoj,

zkus tuhle konstrukci:

float proměnná = Convert.ToSin­gle(combobox.Tex­t);

 
Nahoru Odpovědět 31. ledna 21:23
Avatar
Andy Scheuchzer:31. ledna 21:37

Pokud se nepletu, ComboBox by měl mít vlastnost SelectedItem, tak zkus převést tu (možná bude ještě potřeba ToString()).

Nahoru Odpovědět 31. ledna 21:37
Člověk, co si myslí, že snědl všechnu moudrost světa, i když tomu tak není.
Avatar
HONZ4
Člen
Avatar
Odpovídá na Dominik
HONZ4:31. ledna 22:12

Můj tip, je že v tom textu máš desetinou tečku místo čárky, nebo naopak (podle prostředí). Jestli jo, tak asi nejlepší řešení je ošetřit vstup.
Pak, tohle musí fungovat:

float combo_value;
private void button1_Click(object sender, EventArgs e)
{
    try
    {
        combo_value = float.Parse(comboBox1.Text);
        Text = combo_value.ToString();
    }
    catch(Exception /*ex*/)
    {
        // MessageBox.Show(ex.Message, Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}
Editováno 31. ledna 22:14
 
Nahoru Odpovědět 31. ledna 22:12
Avatar
Jakub Hýža
Člen
Avatar
Jakub Hýža:31. ledna 22:16

Kód

float proměnná = float.Parse(combobox.Text);

je dobře. "Vstupní řetězec nemá správy formát" znamená že ten string obsahuje nějaké znaky, které nejdou převést. Zkus místo desetinné čárky použít desetinnou tečku (nebo naopak). To je v tomto případě nejčastější chyba.

Editováno 31. ledna 22:17
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět  +2 31. ledna 22:16
Sleep(); Eat();. Code(); Repeat();
Avatar
Dominik
Člen
Avatar
Odpovídá na Dominik
Dominik:31. ledna 22:31

Díky všem za rady, pomohli jste mi.

 
Nahoru Odpovědět 31. ledna 22:31
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.