Def*_*ult 6 c# floating-point parsing
如何解析1,2用Single.Parse?问的原因是因为,当我使用时,CultureInfo.InvariantCulture我不会按照我的意愿得到1.2,而是12.
难道"不变文化"不应该忽视文化吗?
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);
}
}
Run Code Online (Sandbox Code Playgroud)
这个的输出将是
12
1.2
错误
真实
12
但我期待:
1.2
1.2
真
真正
1.2
小智 14
CultureInfo.InvariantCulture使用.作为小数点分隔,并,作为千位分隔符.这与任何用户设置无关,并且与您获得的字符串无关,因此名称为"InvariantCulture".NumberFormatInfo.InvariantInfoMSDN页面上列出了具体的详细信息.
要,用作小数分隔符,请不要使用CultureInfo.InvariantCulture.相反,使用一个,用作小数分隔符的文化.有许多适合您的需求.
或者,创建基于的自定义文化CultureInfo.InvariantCulture.您可以调用其Clone方法来创建可以修改属性的副本.
您链接的其中一篇文章说“不变的文化与英语内部相关”。所以“InvariantCulture”并不意味着“尝试匹配任何文化”。这意味着:忽略本地系统文化设置并将此数字视为特定标准(基本上:英语文化标准)中的格式。所以如果你想处理不同的格式,你的选择是:
| 归档时间: |
|
| 查看次数: |
19946 次 |
| 最近记录: |