求一简单正则式,关于四舍五入的?

Radar2006 2006-07-21 04:44:10
有一字符串s,为一浮点数。不好讲,示例如下:
s 结果
20 20.0

20.4 20.4
20.6 20.6

20.13 20.1
20.15 20.2

20.13... 20.1
20.15... 20.2
最好不转换成浮点数,用正则实现。
if(Regex.IsMatch(s,@"\d*\.\d[56789]"))
{
res=怎么在小数点后一位加一?
}
在线等,谢谢!!!
...全文
401 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Radar2006 2006-07-21
  • 打赏
  • 举报
回复
哎呀,分太少了,qyfjl(Try to improve my skills.) 兄弟下次给你补上。
qyfjl 2006-07-21
  • 打赏
  • 举报
回复
你想嘛,我们不管小数的第一位为单双,只要发现尾数大于等于5的,就在尾数后面加个一就行了。
diandian82 2006-07-21
  • 打赏
  • 举报
回复
mark
qyfjl 2006-07-21
  • 打赏
  • 举报
回复
换个思路去想问题,你可以先去判断最后一位是不是大于等于5,如果为TRUE就用下面这个,为FALSE就用原来哪个。
string temp = "0.01";
string s = "19.29";
decimal va = Convert.ToDecimal(s) +Convert.ToDecimal (temp);
va = Math.Round(va,1);
MessageBox.Show(va.ToString ());
mobin4211 2006-07-21
  • 打赏
  • 举报
回复
string s = "19.26";
decimal va = Convert.ToDecimal(s);
va = Math.Round(va,1);
MessageBox.Show(va.ToString ());

Radar2006 2006-07-21
  • 打赏
  • 举报
回复
不Parse成double行不?
四舍五入通过正则replace能不能实现?
-------------------------
double x=Double.Parse(s);
x=Math.Floor(x*10+0.5)/10;
return x.ToString();
-------------------------
Radar2006 2006-07-21
  • 打赏
  • 举报
回复
呵呵,现在正在学正则,所以看看能不能用上。

基本实现了,哪位高人还有更好的办法么?

//四舍六入五单双
static public string RoundEx(string s)
{
if(Regex.IsMatch(s,@"^[+|-]?(\d+(\.\d*)?|\d{1,2}(,\d{3})*(\.\d*)?)$"))
{

if(Regex.IsMatch(s, @"^\d*\.[02468]50*$"))
{
return Regex.Match(s,@"\d*\.[02468]").ToString();
}
else
{
double x=Double.Parse(s);
x=Math.Floor(x*10+0.5)/10;
//x=Math.Round(x,1);
return x.ToString();
}
}
else
{

return "0";
}
}
Radar2006 2006-07-21
  • 打赏
  • 举报
回复
国际上同用的数字修约规则:
四舍五入,但如果所要舍入的位恰好等于5时,
则看5前一位的数是奇数还是偶数,如是奇数则入,偶数则舍。
qyfjl 2006-07-21
  • 打赏
  • 举报
回复
string s = "19.26";
decimal va = Convert.ToDecimal(s);
va = Math.Round(va,1);
MessageBox.Show(va.ToString ());
qyfjl 2006-07-21
  • 打赏
  • 举报
回复
我认为不用正则就行。
先把字符串转为浮点型,再用数学方法四舍五入就行了。

110,534

社区成员

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

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

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