Konwertuję ciąg, taki jak „41.00027357629127”, i używam;
Convert.ToSingle("41.00027357629127");
lub
float.Parse("41.00027357629127");
Te metody zwracają 4.10002732E + 15 .
Kiedy konwertuję na zmiennoprzecinkowe, chcę mieć wartość „41.00027357629127”. Ten ciąg powinien być taki sam ...
c#
.net
string
floating-point
type-conversion
Mehmet
źródło
źródło
Odpowiedzi:
Ustawienia regionalne Twojego wątku to takie, w których znak dziesiętny to „,” zamiast „.”.
Spróbuj użyć tego:
Należy jednak pamiętać, że zmiennoprzecinkowy nie może pomieścić tylu cyfr precyzji. Aby to zrobić, musisz użyć double lub Decimal.
źródło
using System.Globalization;
aby uzyskać dostępCultureInfo
Po pierwsze, jest to tylko prezentacja tego
float
numeru można zobaczyć w debuggera. Prawdziwa wartość wynosi około dokładny (tyle, ile jest to możliwe).Uwaga: Zawsze używaj informacji CultureInfo, gdy masz do czynienia z liczbami zmiennoprzecinkowymi w porównaniu z ciągami.
To tylko przykład; wybierz odpowiednią kulturę dla swojego przypadku.
źródło
new System.Globalization.CultureInfo("tr-TR")
Możesz użyć następujących:
źródło
Posługiwać się
Convert.ToDouble("41.00027357629127");
Convert.ToDouble
dokumentacjaźródło
Dokładność liczby zmiennoprzecinkowej wynosi 7 cyfr. Jeśli chcesz zachować całą partię, musisz użyć podwójnego typu, który zachowuje 15-16 cyfr. Jeśli chodzi o formatowanie, spójrz na post o formatowaniu podwójnych . I musisz się martwić o separatory dziesiętne w C # .
źródło
Możesz
double.Parse("41.00027357629127");
źródło
Możesz użyć parsowania z double zamiast float, aby uzyskać większą precyzję.
źródło