В контроллере Asp.Net С# MVC я хочу преобразовать строку в число с плавающей запятой с помощью этого кода:
string test1 = "7.8";
float test2 = float.Parse(test1);
Результатом test2 является 78, а не 7.8. Что мне делать, чтобы получить результат 7.8?
Невоспроизводимый в VS с другим приложением MVC. Вы использовали правильный десятичный разделитель?
Ваш десятичный разделитель не "." Это "," Это настройки вашей локальной среды. Он должен работать с "7,8"
Я пытался использовать "7,8", но результат не от (0) до
Я думаю, что test2 = 0, потому что этот код строки не выполняется, просто продолжайте отладку, и вы получите 7.8.
даже float.Parse("7,8") должен дать результат 78
вы правы Тоан Тран, спасибо за исправление, поэтому я использую "7,8" и использую синтаксис float test2 = Single.Parse(test1); QBA, а затем успех, спасибо
ваш комментарий правильный @Sxntk и решил мою проблему, вы можете указать ответ, спасибо.
Ответ @AghnatAtqiya nalnpir и Shreyas Pednekar также правильный. Я предпочитаю второй, потому что культурный инвариант делает точку всегда десятичным разделителем в любой среде.





Попробуйте ниже:
string test1 = "7.8";
float test2 = Single.Parse(test1);
Пожалуйста, прочитайте больше: https://docs.microsoft.com/en-us/dotnet/api/system.single.parse?view=netframework-4.7.2
результат от (0) до
Как сказал Sxntk, вероятно, для ваших настроек требуется вместо «.» поэтому решением было бы проанализировать его как другую культуру, такую как испанский, мы используем «.». вместо ","
float.Parse(test1,new CultureInfo("EN-ES"))
вам также понадобится
using System.Globalization;
Попробуйте это, вы получите 7,8
string test = "7.8";
float test2 = float.Parse(test, System.Globalization.CultureInfo.InvariantCulture);
Console.WriteLine(test2);
@Sxntk скажи мне в комментарии,
Ваш десятичный разделитель не "." Это "," Это ваши локальные настройки среды. Он должен работать с "7,8"
Странно, я не смог воспроизвести вашу проблему. Проверьте код dotnetfiddle.net/uLulIz