Anniversary - BF C/C++ week
80 % bodů zdarma na online výuku díky naší Narozeninové akci!
Pouze tento týden sleva až 80 % na e-learning týkající se C/C++

Diskuze: String na Float

Aktivity (4)
Avatar
Dominik
Člen
Avatar
Dominik:31.1.2019 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.1.2019 19:39
Avatar
Pavel
Člen
Avatar
Pavel:31.1.2019 21:23

Ahoj,

zkus tuhle konstrukci:

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

 
Nahoru Odpovědět
31.1.2019 21:23
Avatar
Reaktivní uživatel:31.1.2019 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.1.2019 21:37
Kdo je připraven, toho zaskočí něco jiného
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
HONZ4
Člen
Avatar
Odpovídá na Dominik
HONZ4:31.1.2019 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.1.2019 22:14
 
Nahoru Odpovědět
31.1.2019 22:12
Avatar
Jakub Hýža
Člen
Avatar
Jakub Hýža:31.1.2019 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.1.2019 22:17
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět
31.1.2019 22:16
Sleep(); Eat();. Code(); Repeat();
Avatar
Dominik
Člen
Avatar
Odpovídá na Dominik
Dominik:31.1.2019 22:31

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

 
Nahoru Odpovědět
31.1.2019 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.