日期:2014-05-18  浏览次数:20809 次

string转decimail类型本机调试不报错,发布后无法添加数据,报错
开发环境和IIS服务器都是.NET 3.5环境,使用decimail.parse 或convert.todecimal 都不行,得到的是"0.5" string 类型的数据,本机转换都正常,发布了就不行了,只有小数不行,有什么解决办法吗?

------解决方案--------------------
不同的服务器数据格式设置是不同的,你可以到控制面板里面的区域设置看看

你可以参照下面的例子设置固定的NumberFormatInfo试试

C# 解析任意格式的数字字符串

在.NET中, NumberFormatInfo 类是用来设置数字格式的,有了这个类,我们就可以正确解析任意格式的数字字符串。NumberGroupSeparator 属性用来获取或设置在数值中对小数点左边数字进行分组的字符串。NumberDecimalSeparator 属性获取或设置在数值中用作小数点分隔符的字符串。下面是几个例子,通过运行例子,就可以明白其工作原理了。
C# 代码
C# code

//NumberGroupSeparator : 获取或设置在数值中对小数点左边数字进行分组的字符串。
//NumberDecimalSeparator : 获取或设置在数值中用作小数点分隔符的字符串。
String num1 = "123,456,789";
String num2 = "123|456|789";
String num3 = "123.456.789";
String num4 = "123,456.789";
String num5 = "123.456,789";
System.Globalization.NumberFormatInfo nfi = new System.Globalization.NumberFormatInfo();
nfi.NumberGroupSeparator = ",";
int x1 = int.Parse(num1, System.Globalization.NumberStyles.AllowThousands, nfi);
nfi.NumberGroupSeparator = "|";
int x2 = int.Parse(num2, System.Globalization.NumberStyles.AllowThousands, nfi);
nfi.NumberGroupSeparator = ".";
int x3 = int.Parse(num3, System.Globalization.NumberStyles.AllowThousands, nfi);
nfi.NumberGroupSeparator = ",";
nfi.NumberDecimalSeparator = ".";
Decimal x4 = Decimal.Parse(num4,nfi);
nfi.NumberGroupSeparator = ".";
nfi.NumberDecimalSeparator = ",";
Decimal x5 = Decimal.Parse(num5, nfi);
Response.Write("<li>" + x1);
Response.Write("<li>" + x2);
Response.Write("<li>" + x3);
Response.Write("<li>" + x4);
Response.Write("<li>" + x5);