Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何选择正确的CultureInfo,使十进制始终正确_Asp.net_Decimal_Cultureinfo - Fatal编程技术网

Asp.net 如何选择正确的CultureInfo,使十进制始终正确

Asp.net 如何选择正确的CultureInfo,使十进制始终正确,asp.net,decimal,cultureinfo,Asp.net,Decimal,Cultureinfo,我有以下代码: object obj=GetParameterValue('PARAM1');// decimal value=Convert.ToDecimal(obj); GetparameterValue方法返回一个对象。假设对象的值为1268.08。当我在自己的机器IIS上部署应用程序时,值是正确的。但如果我在另一个区域设置为俄语的IIS上尝试,我会得到126808。如果我将第二行代码替换为下面的代码,则该数字将返回右侧: decimal value=Convert.ToDeci

我有以下代码:

 object obj=GetParameterValue('PARAM1');//
 decimal value=Convert.ToDecimal(obj);
GetparameterValue方法返回一个对象。假设对象的值为1268.08。当我在自己的机器IIS上部署应用程序时,值是正确的。但如果我在另一个区域设置为俄语的IIS上尝试,我会得到126808。如果我将第二行代码替换为下面的代码,则该数字将返回右侧:

 decimal value=Convert.ToDecimal(obj,new CultureInfo("ru-RU"));
但我不想只坚持俄罗斯文化。我尝试过不变量文化,但它不起作用,我仍然得到126808而不是1268.08。在这种情况下我该怎么办

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

2.我应该为特定的文化编写代码吗?(与第一个案例没有太大区别)

3.如果以上两种方法都不对,是否有更好的通用方法

CultureInfo.CurrentCulture

这是最好的通用方法。

是否希望十进制格式始终相同?然后像使用一个选定的区域设置一样使用,例如en_US。这里没有问题。我还认为更好的办法是使两种IIS配置相互兼容。问题不在于十进制的格式。问题是,如果选择了不同的区域设置,Convert.ToDecimal()将返回两个不同的数字,如126880和1268.80。更清楚地说,其中一个数字是十二万六千八百八十,而另一个是一千二百六十八点八。