2008-09-15 11 views

Odpowiedz

50
Double.Parse("1.234567E-06", System.Globalization.NumberStyles.Float); 
+0

Prawo do woli. Dzięki. – odbasta

+13

Nie działa, jeśli separatorem dziesiętnym bieżącej kultury nie jest ".". Tak więc zawsze działającym podejściem jest użycie 'NumberStyles.Any' lub (lepiej) wymuszenie' InvariantCulture': 'Double.Parse (" 1.234567E-06 ", NumberStyles.Float, CultureInfo.InvariantCulture);' –

+0

Pamiętaj, że jeśli halsujesz a .ToString() na końcu tej procedury wywoła zwróci notację naukową, a nie ciąg cyfr. Musiałem uwzględnić parametr ciągu formatu ("0.0000") w wywołaniu .ToString(), aby poprawnie utworzyć format float. –

11

również rozważyć użycie

Double.TryParse("1.234567E-06", System.Globalization.NumberStyles.Float, out MyFloat); 

Zapewni to MyFloat jest ustawiona na wartość 0, jeśli z jakiegokolwiek powodu, konwersja nie może być wykonana. Możesz też zawinąć przykład Double.Parse() w bloku Try..Catch i ustawić wartość MyFloat na wybraną przez siebie wartość po wykryciu wyjątku.

+17

Nie chcesz polegać na MyFloat jako 0, aby wskazać nieudaną konwersję, na której chcesz polegać. – Carl

Powiązane problemy