【问题标题】:How to choose correct CultureInfo so that decimal is always right如何选择正确的 CultureInfo 以使小数始终正确
【发布时间】:2013-07-09 09:42:45
【问题描述】:

我有以下代码:

 object obj=GetParameterValue('PARAM1');//
 decimal value=Convert.ToDecimal(obj);

GetparameterValue 方法返回一个对象。假设对象的值为 1268.08。当我在自己的机器 IIS 上部署我的应用程序时,值是正确的。但是,如果我在另一个区域设置为俄语的 IIS 上尝试它,我会得到 126808。如果我用下面的代码替换第二行代码,则数字返回正确:

 decimal value=Convert.ToDecimal(obj,new CultureInfo("ru-RU"));

但我不想只坚持俄罗斯文化。我试过 InvariantCulture 但它没有用,我仍然得到 126808 而不是 1268.08。这种情况我该怎么办?

1.我是否应该为我的代码配置要部署应用程序的机器

2.我应该为某些特定的文化编写代码吗? (和第一种情况差别不大)

3.如果以上都不对,有没有更好的通用方法?

【问题讨论】:

  • 您希望十进制格式始终相同吗?然后像使用一个选定的语言环境一样使用,例如 en_US。在这里看不到问题。另外我认为更好的办法是让两种 IIS 配置相互兼容。
  • 问题不在于小数的格式。问题是选择不同的语言环境时,Convert.ToDecimal() 返回两个不同的数字,如 126880 和 1268.80。说得更清楚一点,其中一个数字是十二万六千八百八十,而另一个数字是一千二百六十八点八。

标签: asp.net decimal cultureinfo


【解决方案1】:

使用

CultureInfo.CurrentCulture

这是最好的通用方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    • 2013-06-02
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多