如何使InvariantCulture识别逗号作为小数点分隔符? [英] How to make InvariantCulture recognize a comma as a decimal separator?
问题描述
如何用 Single.Parse
解析 1,2
?问这个问题的原因是,当我使用 CultureInfo.InvariantCulture
的时候,我并没有得到1.2,而是我想要的12.而
不应该不变的文化忽略文化?
using System;
我应该得到这个结果,但我不是。 $ b
使用System.Globalization;
$ b $ public class Program
{
public static void Main()
{
Console.WriteLine(Single.Parse(1,2,CultureInfo .InvariantCulture));
Console.WriteLine(Single.Parse(1.2,CultureInfo.InvariantCulture));
浮动值;
Console.WriteLine(Single.TryParse(1,2,NumberStyles.Float,CultureInfo.InvariantCulture,out value));
Console.WriteLine(Single.TryParse(1,2,out value));
Console.WriteLine(value);
$ p $这个的输出将是
12
1.2
错误
真实
12
但是我期待:
$ b
1.2
1.2
真实
真实
1.2
解决方案
CultureInfo.In variantCulture 使用 。
作为小数点分隔符,,作为千位分隔符。这是独立于任何用户设置,独立于您所拥有的字符串,因此名称为InvariantCulture。具体的细节列在 NumberFormatInfo.InvariantInfo
MSDN页面。
要使用
,
作为小数点分隔符, t使用CultureInfo.InvariantCulture
。相反,使用文化,使用,
作为小数点分隔符。有很多可以满足您的需求。
或者,根据
CultureInfo.InvariantCulture
创建自定义区域性。您可以调用其克隆
方法创建一个副本,您可以修改其属性。How do I parse
1,2
withSingle.Parse
? The reason of asking is because, when I am usingCultureInfo.InvariantCulture
I don't get 1.2 as I would like, but rather 12.Shouldn't "Invariant Culture" ignore the culture?
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); } }
The output of this will be
12
1.2
False
True
12But I was expecting:
1.2
1.2
True
True
1.2Based on my reading of
InvariantCulture
I should get that result, however I am not.解决方案
CultureInfo.InvariantCulture
uses.
as a decimal separator, and,
as a thousands separator. This is independent of any user settings, and independent of the string you've got, hence the name "InvariantCulture". The specific details are listed on theNumberFormatInfo.InvariantInfo
MSDN page.To use
,
as the decimal separator, don't useCultureInfo.InvariantCulture
. Instead, use a culture that does use,
as the decimal separator. There are many that would suit your needs.Alternatively, create a custom culture based on
CultureInfo.InvariantCulture
. You can call itsClone
method to create a copy of which you can modify the properties.这篇关于如何使InvariantCulture识别逗号作为小数点分隔符?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!