小数.解析方法

本文关键字:方法 小数 | 更新日期: 2023-09-27 17:51:10

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

所以有一个next:

当我尝试将对象{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"];

对任何用户都可以很好地强制转换值,我只是想了解为什么会出现这个错误?是什么引起的?有人有什么想法吗?

注::服务器和用户的区域设置在这两种情况下是相同的。

小数.解析方法

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

这是一个不好的做法去Decimal——> string——> Decimal。

正如Jon Skeet指出的(他的答案消失了),在某些文化中逗号是小数点。因此,在执行ToString()时,请注意所使用的区域性