Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.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
C# GETDECIMALL()不考虑C中的小数分隔逗号_C#_Ado.net_Type Conversion_Decimal - Fatal编程技术网

C# GETDECIMALL()不考虑C中的小数分隔逗号

C# GETDECIMALL()不考虑C中的小数分隔逗号,c#,ado.net,type-conversion,decimal,C#,Ado.net,Type Conversion,Decimal,我们在冰岛的生产数据库(SQL Server 2008R2)以逗号(,)作为十进制分隔符存储sqlmoney列值(例如54,12和85,00)。我们的应用程序(C#,ASP.Net)使用SqlDatareader读取值,代码如下所示 decimal testVal=dr.GetDecimal(idxAmountUSD)//IdxAmountUSD is sqlmoney value 现在它不考虑逗号(,)作为十进制分隔符,返回5412&8500 实际上,它应该返回为54.12和85.12。在创

我们在冰岛的生产数据库(SQL Server 2008R2)以逗号(,)作为十进制分隔符存储sqlmoney列值(例如54,12和85,00)。我们的应用程序(C#,ASP.Net)使用SqlDatareader读取值,代码如下所示

decimal testVal=dr.GetDecimal(idxAmountUSD)//IdxAmountUSD is sqlmoney value
现在它不考虑逗号(,)作为十进制分隔符,返回5412&8500


实际上,它应该返回为54.12和85.12。

在创建SQLDataReader实例之前,您需要定义您的区域性:

Application.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("yourCulture");

您需要读取特定于数据区域性的数据,首先定义区域性,然后读取数据

Thread.CurrentThread.CurrentCulture = new CultureInfo("is-IS"); //is-IS is an iceland culture (where , is used inplace of .) .
// following line remains same
decimal testVal=dr.GetDecimal(idxAmountUSD)//IdxAmountUSD is sqlmoney value

我没有测试上述代码,但从逻辑上讲它是正确的。

可能重复的代码您没有使用
ToDecimal
(这会建议
Convert.ToDecimal
),您使用的是
GetDecimal
。这不应该涉及任何字符串到十进制的转换,也不应该涉及任何十进制分隔符。您的查询是什么样子的?它是返回十进制类型还是字符串?sqlmoney是CLR类型。Db中实际列的定义是什么?@FilipEkberg不,不是它的副本,这不是关于显示小数点,而是关于小数点得到错误的值。它应该返回小数点的值。DB列类型为money。