当我尝试这一行时:
float f = float.Parse(val, System.Globalization.NumberStyles.AllowDecimalPoint | System.Globalization.NumberStyles.AllowThousands);
其中val是一个字符串,设置为" 5.267"没有引号,我收到此错误:
FormatException:未知的char :. System.Double.Parse(System.String s,NumberStyles样式,IFormatProvider提供程序) System.Single.Parse(System.String s,NumberStyles style)
所以我尝试将小数点更改为逗号,例如:5,267并收到此错误:
FormatException:未知的char :, System.Double.Parse(System.String s,NumberStyles样式,IFormatProvider提供程序) System.Single.Parse(System.String s,NumberStyles style)
我....不要'吨....理解。据我所知,我做对了。这很简单,为什么它会给我这样的悲伤呢?
答案 0 :(得分:11)
Parse具有文化意识。如果您当地的文化有不同的要求,那么您可能想要传递文化或其他格式提供者。尝试使用CultureInfo.InvariantCulture
。如果你这样做,你将不需要小数选项。
float f = float.Parse(val,
System.Globalization.NumberStyles.AllowThousands,
CultureInfo.InvariantCulture);
答案 1 :(得分:0)
using System;
using System.Collections.Generic;
using System.Globalization;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
var numList = new List<string>(){"0", "-6e-5", "78.56238", "05.56", "0.5E9", "-45,000.56", "", ".56", "10.4852,64"};
numList.ForEach(num =>
{
// If we use NumberStyles.Float => -45,000.56 is invalid
if (decimal.TryParse(num, NumberStyles.Any, CultureInfo.InvariantCulture, out decimal result))
{
Console.WriteLine(result);
}
else
{
Console.WriteLine(num + " is not a valid number");
}
});
}
}
}