记录一个decimal格式转换出现的问题

来源:互联网 发布:淘宝分销模式解说 编辑:程序博客网 时间:2024/05/22 13:10

如下的一串代码

parm.Month2 = Convert.ToDecimal(ultraGrid1.Rows[i].Cells["Month2"].Value.ToString());

本意应该是读取 ultraGrid1中 MONTH2栏位的值然后转换成decimal 格式保存到对象中。

当MONTH2栏位输入了值得时候,这段固然是没错的。
但是当它为空的时候,程序运行的时候就会报错了,
然后我添加了个判断 把代码改成如下

parm.Month1 = ultraGrid1.Rows[i].Cells["MONTH1"].Value.ToString() == "" ? 0 : Convert.ToDecimal(ultraGrid1.Rows[i].Cells["Month1"].Value.ToString());

但是运行起来还是报同样的错
然后仔细想下 会不会是它为空代表着ultraGrid1.Rows[i].Cells[“MONTH1”].Value.ToString()应是null而不是”“呢? 于是改成

parm.Month1 = ultraGrid1.Rows[i].Cells["MONTH1"].Value.ToString() == null ? 0 : Convert.ToDecimal(ultraGrid1.Rows[i].Cells["Month1"].Value.ToString());

然而也并没有什么用
于是到这里 就算是我这样的小白 也都明白了
正确的话 有几种方式

parm.Month1 = Convert.ToDecimal(ultraGrid1.Rows[i].Cells["MONTH1"].Value.ToString3());parm.Month1 = ultraGrid1.Rows[i].Cells["MONTH1"].Value == null ? 0 : Convert.ToDecimal(ultraGrid1.Rows[i].Cells["Month1"].Value.ToString());parm.Month1 = ultraGrid1.Rows[i].Cells["MONTH1"].Value.ToString2() == "" ? 0 : Convert.ToDecimal(ultraGrid1.Rows[i].Cells["Month1"].Value.ToString());

之前我没用过.ToString3()跟.ToString2() 所以一直没发现它们的好处
.ToString2() 转换为字符串 null转换为空字符串
.ToString3() 转换为字符串 null和空字符串转换成0(针对于数字型的字符串)

0 0
原创粉丝点击