Pytanie w sprawie .net, type-conversion, floating-point, c#, string – Konwertowanie ciągu znaków na Float w C #

81

Konwertuję ciąg taki jak „41.00027357629127” i używam;

Convert.ToSingle("41.00027357629127");

lub

float.Parse("41.00027357629127");

Te metody powracają4.10002732E + 15.

Kiedy konwertuję na float, chcę „41.00027357629127”. Ten ciąg powinien być taki sam ...

41.00027357629127 nie powinno być 4.10002732E + 15 w notacji naukowej, chyba że oczywiście twoja kultura używa przecinka dziesiętnego zamiast przecinka dziesiętnego (i separatora kropek jako tysięcy), tak więc liczba rzeczywiście będzie brzmiała: 4100027357629127 zostanie wyświetlone jako 4.10002732E + 15 ljgww
Jakiś pomysł, dlaczego to jest pojedynczy? I nie To Pływać? R2D2
Skąd wiesz, na co jest konwertowany - w jaki sposób wyświetlasz numer Mark

Twoja odpowiedź

7   odpowiedzi
186

w których znak dziesiętny to „,” zamiast „.”.

Spróbuj użyć tego:

float.Parse("41.00027357629127", CultureInfo.InvariantCulture.NumberFormat);

Należy jednak pamiętać, że pływak nie może pomieścić tak wielu cyfr precyzji. Aby to zrobić, musisz użyć podwójnego lub dziesiętnego.

nie zapomnij dodać przestrzeni nazwusing System.Globalization; mieć dostępCultureInfo Mobiletainment
7

Convert.ToDouble("41.00027357629127");

Convert.ToDouble dokumentacja

Czy to nie zmienia typu danych z float na double? PO poszukiwany pływak. Coding hierarchy
21

prezentacja zfloat numer, który widzisz w debuggerze. Thereal wartość jest w przybliżeniu dokładna (o ile to możliwe).

Uwaga: Użyjzawsze CultureInfo informacje podczas pracy z liczbami zmiennoprzecinkowymi w stosunku do łańcuchów.

float.Parse("41.00027357629127",
      System.Globalization.CultureInfo.InvariantCulture);

To tylko przykład; wybierz odpowiednią kulturę dla swojego przypadku.

jak mogę wybrać swoją CultureInfo? Jestem w Turcji, gdzie dodam TR-TR? Mehmet
@Mehmetnew System.Globalization.CultureInfo("tr-TR") sshow
10

Możesz użyć następujących:

float asd = (float) Convert.ToDouble("41.00027357629127");
Proszę podać kontekst, dlaczego jest to właściwa odpowiedź. Bas Peeters
0

aby uzyskać większą dokładność.

4

pływak ma 7 cyfr. Jeśli chcesz zachować całą partię, musisz użyćpodwójnie typ, który przechowuje 15-16 cyfr. Jeśli chodzi o formatowanie, spójrz na post oformatowanie podwaja. I musisz się martwićo separatorach dziesiętnych w C #.

Jestem zmęczony double.Parse to zwraca 4100027357629127.0 jest zbyt źle Mehmet
To brzmi jak „.” znak nie jest separatorem dziesiętnym w Twojej lokalizacji? Sprawdzićstackoverflow.com/questions/3870154/c-sharp-decimal-separator jpe
1

double.Parse("41.00027357629127");

Nie sądzę, żeby pytał, jak to zrobić. O. R. Mapper
Jestem zmęczony, ale nie Mehmet

Powiązane pytania