Преобразование строки в Float в C#
Я конвертирую строку типа "41.00027357629127", и я использую;
Convert.ToSingle("41.00027357629127");
или
float.Parse("41.00027357629127");
эти методы возвращают 4.10002732 E+15.
когда я конвертирую в float, я хочу "41.00027357629127". Эта строка должна быть такой же...
7 ответов:
языковой стандарт вашего потока установлен в один, в котором десятичная метка", " вместо ".".
попробуйте использовать этот:
float.Parse("41.00027357629127", CultureInfo.InvariantCulture.NumberFormat);
обратите внимание, однако, что поплавок не может содержать столько цифр точности. Для этого вам нужно будет использовать double или Decimal.
во-первых, это просто презентация на
float
число, которое вы видите в отладчике. Элемент реальные значение приблизительно точное (насколько это возможно).Примечание:всегдаCultureInfo информация при работе с числами с плавающей запятой по сравнению со строками.
float.Parse("41.00027357629127", System.Globalization.CultureInfo.InvariantCulture);
Это просто пример; выберите подходящий язык и региональные параметры для вашего случая.
точность float - 7 цифр. Если вы хотите сохранить всю партию, вам нужно использовать двойной тип, который держит 15-16 цифр. Что касается форматирования, посмотрите на сообщение о форматирование двойников. И вам нужно беспокоиться о десятичных разделителях в C#.