c# - decimal.Parse 方法

标签 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"];

这对任何用户都具有很好的值(value),我只是想了解为什么会出现该错误?是什么原因造成的?有没有人有一些想法?

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

最佳答案

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

去是个坏习惯 十进制 --> 字符串 --> 十进制。

正如 Jon Skeet 指出的(他的回答消失了)在某些文化中逗号是小数点。因此,在执行 ToString() 时要小心使用的文化。

关于c# - decimal.Parse 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22558050/

相关文章:

C# CX509PrivateKey格式

MySQL 查询(分组依据)

c# - ASP.net 中的字符串比较 (C#)

c# - 自定义 UserControl - 设计时支持控件重绘

.net - Environment.CurrentDirectory 与 System.Reflection

c# - 泛型和接口(interface)问题

c# - 如何将字符串显式转换为安全字符串

c# - Android 中的 HTTP post 问题

sql - SSIS 部署 : SSIS Package run time error in SQL Server deployment

MySQL 使用带联合的 select 查询更新表给出每个派生表必须有自己的别名错误