Liczba wykładnicza na dziesiętną

0

Witam, próbuję zamienić liczbę z wykładnikiem dziesiętnym na liczbę zmiennoprzecinkową. Liczba ma postać.

string Ra = "+1.48491584E+03";

Następnie próbuję ją zamienić tak.

decimal x = decimal.Parse(Ra, NumberStyles.Number | NumberStyles.AllowExponent);

I wyskakuje mi wyjątek

Nieprawidłowy format ciągu wejściowego

Nie wiem co jest grane. Może ten + na początku coś psuje.

1

Może C# oczekuje, żeby separatorem dziesiętnym był przecinek, skoro masz system po polsku? Spróbuj z przecinkiem.

0

Dzięki, problemem był faktycznie przecinek :D

0

Nie wiem co jest u Ciebie, może Masz jakąś literówkę, ale mi ideone wykonuje Twój kod:

    using System;
    using System.Globalization;
     
    public class Test
    {
    	public static void Main()
    	{
    		string Ra = "+1.48491584E+03";
    		decimal x = decimal.Parse(Ra, NumberStyles.Number | NumberStyles.AllowExponent);
    		Console.WriteLine(x); // -> 1484.91584
    	}
    }

prawidłowo.

4

A wystarczy korzystać z dokumentacji i podać w argumentach InvariantCulture, aby separatorem dziesiętnym była kropka, a nie ten wybrany przez użytkownika.
Całość: decimal x = decimal.Parse(Ra, NumberStyles.Number | NumberStyles.AllowExponent, CultureInfo.InvariantCulture);

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