1

Ich habe diese zwei Codes versucht:Wie konvertiert man positive oder negative wissenschaftliche Notation in C#?

1)

Decimal h2 = 0; 
Decimal.TryParse("-8.13E-06", out h2); 

2)

Decimal.Parse(Convert.ToString(used[row, column].Value), NumberStyles.AllowExponent | NumberStyles.AllowDecimalPoint); 

aber es funktioniert nicht für -8.13E-06 Wert.

Jede andere bessere Option, um wissenschaftliche Notation in Dezimal zu konvertieren?

Vielen Dank im Voraus.

+0

können Sie erklären, was Sie unter „funktioniert nicht“? Erhalten Sie einen Fehler oder einen unerwarteten Wert? – user1666620

+0

Im ersten Code bekomme ich 0; –

+0

und im zweiten Code bekomme ich Fehler als falsche Eingabezeichenfolge –

Antwort

3

Wenn Ihre Kultur "." als Trennzeichen:

decimal d = Decimal.Parse("-8.13E-06", System.Globalization.NumberStyles.Float); 

Oder können Sie angeben, die InvariantCulture:

decimal d = Decimal.Parse("-8.13E-06", System.Globalization.NumberStyles.Float, CultureInfo.InvariantCulture); 

oder wie in Ihrem exapmple:

Decimal h2 = 0; 
Decimal.TryParse("-8.13E-06", NumberStyles.Float, CultureInfo.InvariantCulture, out h2); 
+0

'Dezimal d = Decimal.Parse (" - 8.13E-06 ", System.Globalization.NumberStyles.Float, CultureInfo.InvariantCulture);' Es funktionierte gut Vielen Dank. –

1

AllowExponent gewohnt per diese Arbeit: https://msdn.microsoft.com/en-us/library/system.globalization.numberstyles(v=vs.110).aspx

Zeigt an, dass die numerische Zeichenfolge in Exponentialschreibweise stehen kann. Das AllowExponent-Flag ermöglicht der analysierten Zeichenfolge, einen Exponenten zu enthalten, der mit dem Zeichen "E" oder "e" beginnt und dem ein optionales positives oder negatives Vorzeichen und eine Ganzzahl folgt. Mit anderen Worten, analysiert erfolgreich Strings in der Form nnnExx, nnnE + xx und nnnE-xx. Es erlaubt kein Dezimaltrennzeichen oder Vorzeichen in der Mantisse von mantisse von manifest oder ; Um zu ermöglichen, dass diese Elemente in der Zeichenfolge analysiert werden, verwenden Sie die AllowDecimalPoint- und AllowLeadingSign-Flags oder verwenden Sie einen zusammengesetzten Stil , der diese einzelnen Flags enthält.

System.Globalization.NumberStyles.Float ist ein solcher Verbund Stil

Verwandte Themen