Wpis z mikrobloga

#csharp #programowanie

Panowie mam problem ponieważ mam tablicę jedno wymiarową string gdzie są same wartości numeryczne (również wartości przecinkowe) a muszę z tego wyznaczyć minimalną wartość... I tu jest problem bo nie mogę tego przekonwertować.. Próbowałem tak :

static double fMin(string[] tab)
{
double[] tab2 = new double[tab.Length];
for (int i = 0; i < tab.Length; i++) {
tab2[i] = Convert.ToDouble(tab[i]);
}

double min = /tab.First()

for (int i = 1; i < tab.Length; i++)
{
if (tab2[i] < min)
min = tab2[i];
}

return min;
}

Lecz niestety wyrzuca mi błąd, że "nieprawidłowy format ciągu wejściowego"... Ktoś mi coś poradzi ;) ?
  • 27
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Lecz niestety wyrzuca mi błąd, że "nieprawidłowy format ciągu wejściowego"... Ktoś mi coś poradzi ;) ?


w pętli np. tab2[i].Replace(',','.'); //cuś takiego może odwrotnie, przecinek z kropką

@Phoryn:
  • Odpowiedz
@Kamasetto: Ale namieszałeś... ( ͡° ͜ʖ ͡°) I pewnie nic z tego nie zadziała poprawnie.

Przejrzałbym plik i zrobił to wykorzystując odpowiednią kulturę albo dostosowując ją
var cultureInfo = CultureInfo.InvariantCulture.Clone() as CultureInfo;
cultureInfo.NumberFormat.NumberDecimalSeparator = ","; // tu okreslamy separator dla ułamków
cultureInfo.NumberFormat.NumberGroupSeparator = "."; // tu określamy separator dla tysięcy akurat kropa
  • Odpowiedz
@Phoryn: To wystarczy, że zrobisz tak Convert.ToDouble(i, new CultureInfo("en-us"));
i powinno działać chyba, że masz spacje między tysiącami:)
using System.Globalization; -to też musisz dodać.
Amerykanie używają kropki do części ułamkowej a my przecinka stąd masz błąd formatu bo wzięło z do konwersji ustawienia domyślne komputera
  • Odpowiedz