decimal.Parse方法

时间:2014-03-21 11:53:57

标签: c# sql .net oracle

我刚刚在我的c#代码中找到了一个非常奇怪的Bug,

所以有下一个:

当我试图将对象{string}转换为十进制时,如下所示:

item.ValiaFundo = row.IsNull("PL_FUNDO") ? 0 : decimal.Parse(row["PL_FUNDO"].ToString());

值为row =“2488.1987”,它会返回2488.1987,但对于某些用户,返回值为24881987。

我修复了它更改了我的数据库返回到对象{decimal}的对象类型,如下所示:

item.ValiaFundo = row.IsNull("PL_FUNDO") ? 0 : (decimal)row["PL_FUNDO"];

为任何用户提供了很好的值,我只想了解为什么会发生这种错误?是什么原因造成的有没有人有想法?

P.S。服务器和用户区域设置对于两种情况都是相同的。

1 个答案:

答案 0 :(得分:-1)

但是,似乎来自服务器的数据在类型中已经是十进制的。

这是一个不好的做法 十进制 - > string - >小数。

正如Jon Skeet指出的那样(他的回答消失了)在某些文化中,逗号是小数点。所以在做ToString()时要小心使用的文化。