decimal.Parse 输入负数出错 提示:输入字符串的格式不正确。

my1ove 2010-05-04 02:39:02
decimal smony1 = decimal.Parse(DBHepler.ifnullreturn(mony1.Text.Trim())); 输入负数出现:输入字符串的格式不正确。

DBHepler.ifnullreturn为


public static string ifnullreturn(string a)
{
if (a == "")
{
return "0";
}
else
{ return a;}
}//这个就是检测textbox是不是空 是空就返回0

请专家帮帮忙啊 小弟学习C#不久 谢谢
...全文
1031 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
捷哥1999 2010-05-04
  • 打赏
  • 举报
回复
你就不能在TextBox_Leave后进行转换,你在Textbox_Changed里面肯定不行,一次输入,就会导致这个事件的代码被执行一次。
my1ove 2010-05-04
  • 打赏
  • 举报
回复
我想到了一点用mony_TextChanged时 当输入-时它不是一个数字肯定就出错了 刚刚测试了 先输入 数字再输入-时就没有出错
有没有解决的办法可以先输入-
lzsh0622 2010-05-04
  • 打赏
  • 举报
回复
DBHepler.IsNumber(mony.Text) 这个函数写的是否有问题?
my1ove 2010-05-04
  • 打赏
  • 举报
回复
private void mony_TextChanged(object sender, EventArgs e)
{
if (DBHepler.IsNumber(mony.Text) != true) { MessageBox.Show("不是数字!"); mony.Text = ""; return; }
decimal smony = decimal.Parse(DBHepler.ifnullreturn(mony.Text.Trim()));
decimal smony1 = decimal.Parse(DBHepler.ifnullreturn(mony1.Text.Trim()));
decimal smony2 = decimal.Parse(DBHepler.ifnullreturn(mony2.Text.Trim()));
decimal smony3 = decimal.Parse(DBHepler.ifnullreturn(mony3.Text.Trim()));
decimal smony4 = decimal.Parse(DBHepler.ifnullreturn(mony4.Text.Trim()));
decimal smony5 = decimal.Parse(DBHepler.ifnullreturn(mony5.Text.Trim()));
decimal smony6 = decimal.Parse(DBHepler.ifnullreturn(mony6.Text.Trim()));
decimal smony7 = decimal.Parse(DBHepler.ifnullreturn(mony7.Text.Trim()));
decimal smony8 = decimal.Parse(DBHepler.ifnullreturn(mony8.Text.Trim()));
decimal smony9 = decimal.Parse(DBHepler.ifnullreturn(mony9.Text.Trim()));
decimal smony10 = decimal.Parse(DBHepler.ifnullreturn(mony10.Text.Trim()));
allmony.Text = (smony + smony1 + smony2 + smony3 + smony4 + smony5 + smony6 + smony7 + smony8 + smony9 + smony10).ToString();
}


这一部分我贴出来
my1ove 2010-05-04
  • 打赏
  • 举报
回复
不过从数据库读出数据后给smony.text赋值后 就可以输入负数 而且计算正常 是不是Decimal 对mony的值还要转换一下?
my1ove 2010-05-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 computerfox 的回复:]
负数是可以的!
Decimal 值类型表示从正 79,228,162,514,264,337,593,543,950,335 到负 79,228,162,514,264,337,593,543,950,335 之间的十进制数。

你看看应该是textbox的值不符合规范。看看输入什么值的时候出错?
[/Quote]


比如输入-1 当我输入-时就出错了
idot 2010-05-04
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zhengbin215 的回复:]
decimal abc=0;
decimal.TryParse(TextBox1.Text.Trim(),out abc);
if (abc == 0) Response.Write("无效字符"); //此代码不可靠,如果用户输入的就是0,那么这行代码将以错误方式运行 else
Response.Write(abc);
可以使用以上方法
[/Quote]
jimh 2010-05-04
  • 打赏
  • 举报
回复
负数绝对可以,楼主还是老实检查代码吧,看看问题出在那里。
zhengbin215 2010-05-04
  • 打赏
  • 举报
回复
decimal abc=0;
decimal.TryParse(TextBox1.Text.Trim(),out abc);
if (abc == 0)
Response.Write("无效字符");
else
Response.Write(abc);
可以使用以上方法
idot 2010-05-04
  • 打赏
  • 举报
回复
如果你想让代码更健壮些,可以这样写:
decimal smony1 = 0;
if(!decimal.TryParse(mony1.Text.Trim(),out smony1)) return;
//your biz logic
skep99 2010-05-04
  • 打赏
  • 举报
回复
你的负号和数字是不是全角的?
捷哥1999 2010-05-04
  • 打赏
  • 举报
回复
负数是可以的!
Decimal 值类型表示从正 79,228,162,514,264,337,593,543,950,335 到负 79,228,162,514,264,337,593,543,950,335 之间的十进制数。

你看看应该是textbox的值不符合规范。看看输入什么值的时候出错?
mohugomohu 2010-05-04
  • 打赏
  • 举报
回复

class Program
{
static void Main(string[] args)
{
decimal d = decimal.Parse("-2.0");
}
}

经测试,我认为楼主的“输入负数出错"观点为吹牛

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧