【发布时间】: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