• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C# - problemy zamiany float na string

Object Storage Arubacloud
+1 głos
279 wizyt
pytanie zadane 13 października 2020 w C# przez bartodziej2137 Nowicjusz (160 p.)

Witam, zaczynam swoją naukę C#. Jestem w trakcie kodowania okienkowego kalkulatora. Podczas zamiany floata na stringa za pomocą .ToString() wyskakuje mi błąd: System.FormatException: „Input string was not in a correct format.”.
Dodam że przy nie używania przycisku . i operacji na liczba całkowitych problem nie występuje a kod do tego momentu działa dobrze. Wie ktoś jak skutecznie rozwiązać ten problem zmiany float na string?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Globalization;

namespace Calculator
{
    public partial class Form1 : Form
    {
        string firstN, secondN;
        char type = ' ';
        
        public Form1()
        {
            InitializeComponent();
        }

        private void b0_Click(object sender, EventArgs e)
        {
            action("0");
        }

        private void b1_Click(object sender, EventArgs e)
        {
            action("1");
        }

        private void b2_Click(object sender, EventArgs e)
        {
            action("2");
        }

        private void b3_Click(object sender, EventArgs e)
        {
            action("3");
        }

        private void b4_Click(object sender, EventArgs e)
        {
            action("4");
        }

        private void b5_Click(object sender, EventArgs e)
        {
            action("5");
        }

        private void b6_Click(object sender, EventArgs e)
        {
            action("6");
        }

        private void b7_Click(object sender, EventArgs e)
        {
            action("7");
        }

        private void b8_Click(object sender, EventArgs e)
        {
            action("8");
        }

        private void b9_Click(object sender, EventArgs e)
        {
            action("9");
        }

        private void bC_Click(object sender, EventArgs e)
        {
            firstN = "";
            secondN = "";   
        }

        private void bAC_Click(object sender, EventArgs e)
        {
            type = ' ';
            firstN = "";
            secondN = "";
        }

        private void bDot_Click(object sender, EventArgs e)
        {
            action(".");
        }

        private void bAdd_Click(object sender, EventArgs e)
        {
            type = '+';
        }

        private void bSub_Click(object sender, EventArgs e)
        {
            type = '-';
        }

        private void bMul_Click(object sender, EventArgs e)
        {
            type = '*';
        }

        private void bDiv_Click(object sender, EventArgs e)
        {
            type = '/';
        }

        private void bP_Click(object sender, EventArgs e)
        {
            type = '^';
        }

        private void bScore_Click(object sender, EventArgs e)
        {
            switch(type)
            {
                case '+':
                    tbScore.Text = "";
                    tbScore.Text = (float.Parse(firstN) + float.Parse(secondN)).ToString();
                    break;
                case '-':
                    tbScore.Text = "";
                    tbScore.Text = (float.Parse(firstN) - float.Parse(secondN)).ToString();
                    break;
                case '*':
                    tbScore.Text = "";
                    tbScore.Text = (float.Parse(firstN) * float.Parse(secondN)).ToString();
                    break;
                case '/':
                    tbScore.Text = "";
                    tbScore.Text = (float.Parse(firstN) / float.Parse(secondN)).ToString();
                    break;
            }
        }

        private void action(string clickNum)
        {
                if (type == ' ')
                {
                    firstN += clickNum;
                    tbScore.Text = firstN;
                }
                else
                {
                    secondN += clickNum;
                    tbScore.Text = "";
                    tbScore.Text = secondN;
                }
        }

    }
}

Z góry dziękuje :)

komentarz 13 października 2020 przez Oscar Nałogowiec (29,290 p.)
A czy jesteś pewny, że problem dotyczy konwersji z float na String a nie odwrotnie? Wszędzie tam masz też float.Parse.
komentarz 13 października 2020 przez bartodziej2137 Nowicjusz (160 p.)
Rzeczywiście spróbowałem zapisać to w trochę inny sposób i program sypie się przy zamianie stringa na floata.

1 odpowiedź

+1 głos
odpowiedź 13 października 2020 przez tangarr Mędrzec (154,860 p.)
Musisz podać format w jakim chcesz wyświetlić liczbę.
Zapoznaj się z artykułem https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings

Podobne pytania

+1 głos
1 odpowiedź 134 wizyt
pytanie zadane 26 sierpnia 2021 w C# przez Mixteraks Początkujący (360 p.)
0 głosów
1 odpowiedź 585 wizyt
pytanie zadane 24 października 2019 w C# przez Babbage Obywatel (1,630 p.)
+1 głos
2 odpowiedzi 655 wizyt
pytanie zadane 5 grudnia 2015 w C# przez rafalx200 Początkujący (250 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...