如何使用1,2
解析Single.Parse
?提问的原因是,当我使用CultureInfo.InvariantCulture
时,我不会按照自己的意愿获得1.2,而是12。
不应该"不变的文化"忽视文化?
Consider the following example:
using System;
using System.Globalization;
public class Program
{
public static void Main()
{
Console.WriteLine(Single.Parse("1,2", CultureInfo.InvariantCulture));
Console.WriteLine(Single.Parse("1.2", CultureInfo.InvariantCulture));
float value;
Console.WriteLine(Single.TryParse("1,2", NumberStyles.Float, CultureInfo.InvariantCulture, out value));
Console.WriteLine(Single.TryParse("1,2", out value));
Console.WriteLine(value);
}
}
这个输出将是
12
1.2
假
真
12
但我在期待:
我1.2
1.2
真
真
1.2
InvariantCulture
的{{3}} Based on my我应该得到这个结果,不过我不是。
答案 0 :(得分:12)
CultureInfo.InvariantCulture
使用.
作为小数点分隔符,,
作为千位分隔符。这与任何用户设置无关,并且与您获得的字符串无关,因此名称为“InvariantCulture”。具体详细信息列在NumberFormatInfo.InvariantInfo
MSDN页面上。
要使用,
作为小数点分隔符,请不要使用CultureInfo.InvariantCulture
。相反,请使用使用,
作为小数分隔符的区域性。有许多适合您的需求。
或者,根据CultureInfo.InvariantCulture
创建自定义文化。您可以调用其Clone
方法来创建可以修改属性的副本。
答案 1 :(得分:4)
您链接的一篇文章说“不变文化与英语内部相关”。所以'InvariantCulture'并不意味着“尝试匹配任何文化”。这意味着:忽略本地系统文化设置,并将此数字视为特定标准格式(基本上是:英国文化标准)。 因此,如果您想处理不同的格式,请在此处选择: