如何使InvariantCulture识别逗号作为小数点分隔符? [英] How to make InvariantCulture recognize a comma as a decimal separator?

查看:161
本文介绍了如何使InvariantCulture识别逗号作为小数点分隔符?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何用 Single.Parse 解析 1,2 ?问这个问题的原因是,当我使用 CultureInfo.InvariantCulture 的时候,我并没有得到1.2,而是我想要的12.而

不应该不变的文化忽略文化?



考虑下面的例子

  using System; 
使用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


基于 on my $ b $ invariantCulture 我应该得到这个结果,但我不是。 $ b

CultureInfo.In variantCulture 使用作为小数点分隔符,,作为千位分隔符。这是独立于任何用户设置,独立于您所拥有的字符串,因此名称为InvariantCulture。具体的细节列在 NumberFormatInfo.InvariantInfo MSDN页面。

要使用作为小数点分隔符, t使用 CultureInfo.InvariantCulture 。相反,使用文化,使用作为小数点分隔符。有很多可以满足您的需求。



或者,根据 CultureInfo.InvariantCulture 创建自定义区域性。您可以调用其 克隆 方法创建一个副本,您可以修改其属性。


How do I parse 1,2 with Single.Parse? The reason of asking is because, when I am using CultureInfo.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
12

But I was expecting:

1.2
1.2
True
True
1.2

Based 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 the NumberFormatInfo.InvariantInfo MSDN page.

To use , as the decimal separator, don't use CultureInfo.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 its Clone method to create a copy of which you can modify the properties.

这篇关于如何使InvariantCulture识别逗号作为小数点分隔符?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆