Преобразование строки в Float в C#


Я конвертирую строку типа "41.00027357629127", и я использую;

Convert.ToSingle("41.00027357629127");

или

float.Parse("41.00027357629127");

эти методы возвращают 4.10002732 E+15.

когда я конвертирую в float, я хочу "41.00027357629127". Эта строка должна быть такой же...

7 74

7 ответов:

языковой стандарт вашего потока установлен в один, в котором десятичная метка", " вместо ".".

попробуйте использовать этот:

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

обратите внимание, однако, что поплавок не может содержать столько цифр точности. Для этого вам нужно будет использовать double или Decimal.

во-первых, это просто презентация на float число, которое вы видите в отладчике. Элемент реальные значение приблизительно точное (насколько это возможно).

Примечание:всегдаCultureInfo информация при работе с числами с плавающей запятой по сравнению со строками.

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

Это просто пример; выберите подходящий язык и региональные параметры для вашего случая.

можно использовать "float asd = (float) Convert.ToDouble("41.00027357629127");.

использовать Convert.ToDouble("41.00027357629127");

Convert.ToDouble документация

точность float - 7 цифр. Если вы хотите сохранить всю партию, вам нужно использовать двойной тип, который держит 15-16 цифр. Что касается форматирования, посмотрите на сообщение о форматирование двойников. И вам нужно беспокоиться о десятичных разделителях в C#.

вы можете double.Parse("41.00027357629127");

вы можете использовать разбор с двойным вместо float, чтобы получить более точное значение.