我刚刚在我的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。服务器和用户区域设置对于两种情况都是相同的。
答案 0 :(得分:-1)
但是,似乎来自服务器的数据在类型中已经是十进制的。
这是一个不好的做法 十进制 - > string - >小数。
正如Jon Skeet指出的那样(他的回答消失了)在某些文化中,逗号是小数点。所以在做ToString()时要小心使用的文化。