Konwersja tablicy stringow w tablice floatow

0

Witam.
Mam problem z konwersja tablicy stringow na tablice floatow/intow.

(..)
string [] split = null;

            while ((line = reader.ReadLine()) != null)
            {
                split = line.Split(new Char[] { ' ' }, System.StringSplitOptions.RemoveEmptyEntries);
                float[] ints = Array.ConvertAll(split, new Converter<string, float>(StringToFloat));
            }
(..)

        public static float StringToFloat(string s)
        {
            return float.Parse(s);
        }

Wywala blad ze nieprawidlowy format ciagu wejsciowego. :/
Mecze sie z tym pare godzin, przyklady google, msdn i nic.

0

Moze jeszcze w ramach objasnien.
Czytam po prostu linia po linii z pliku tekstowego. Nastepnie splituje je po znaku spacji aby otrzymac tablice stringow. Nastepnie chce przekonwertowac ta tablice na floaty aby potem (nie napisalem tego w przykladzie) dodac ja do obiektu Collection.Generic skladowujacego kolejne tablice floatow.

0

Debuguj to.

0

float.Parse(String) konwertuje liczby w formacie systemowym (po polsku są przecinki a nie kropki) i pewnie tu tkwi problem. Możesz użyć float.Parse(String, IFormatProvider) aby użyć innego formatu.

0
Deti napisał(a)

Debuguj to.

Napisalem o jaki blad chodzi wiec nie wiem czego jeszcze oczekujesz.

0
adf88 napisał(a)

float.Parse(String) konwertuje liczby w formacie systemowym (po polsku są przecinki a nie kropki) i pewnie tu tkwi problem. Możesz użyć float.Parse(String, IFormatProvider) aby użyć innego formatu.

Ale ja mam stringa w postaci np. "245.500" czyli sa kropki.
Jezeli masz jakis prosty przyklad z wykorzystaniem tego interfejsu do zmiany formatu to mozesz cos skrobnac, jak nie to jutro poszperam po google, bo dzis juz padam na twarz :P

0

Napisalem o jaki blad chodzi wiec nie wiem czego jeszcze oczekujesz.
A no tego, że w takich przypadkach powinieneś sam sobie pomóc właśnie debugując. A ty nawet nie podałeś linii w której wystąpił wyjątek. Mamy z gwiazd i ruchu planet to wywróżyć ?

Masz kropki czyli źle, bo w systemowym formacie (polskim) są przecinki. A przykładzik sobie sam napisz (ja samemu nie znam i nie wiem jak :p, ale takie rzeczy są w MSDN'ie ).

0

Problem wystapil w linii:
return float.Parse(s);

Tak samo wystepowal jak probowalem to robic poprzez Convert.ToInt32

ed:
Dzieki za odpowiedzi.

0

Luknij na przestrzen System.Globalization. Tam masz klasy odpowiedzialne za ustawienie odpowiedniego formatu narodowego - miedzy innymi separatora dziesietnego wlasnie. A jak chcesz latwiej to lap wyjatek (znaczy, ze byly kropki, a nie polskie przecinki), zamieniaj przecinki na kropki i probuj jeszcze raz.

0

Dzieki :)

Wczoraj juz to zalatwilem poprzez

float.Parse(s, CultureInfo.InvariantCulture);

Tylko juz nie mialem sily pisac na forum ;P
Ale jak bede mial troche czasu to poczytam wiecej o tej przestrzeni nazw i sprobuje zmienic ustawienia :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1