急!!!!!如何去掉小数点后面的0???

jarod_d 2007-07-30 06:16:22
如:
decimal dec = 2.50000
如何去掉后面多作的0,显示2.5呢?
有什么方法?
...全文
7136 34 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
mackes 2011-12-06
  • 打赏
  • 举报
回复
实在受不了了,什么答案啊都
decimal dec = 2.50000
去掉小数点 dec.ToString("#")
保留2位小数点dec.ToString("#.##") 或dec.ToString("N")
xiaohuan_0606 2011-09-07
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 viena 的回复:]

decimal dec = 2.00000m;
string s = dec.ToString().TrimEnd( '0 ');
if (s.EndsWith( ". ")) s = s.Substring(0, s.Length - 1);
[/Quote]
这个是正解,我试过了的解决楼主说的那个问题!
gmailck 2011-04-05
  • 打赏
  • 举报
回复
正确答案是:string.Format("{0:0.#####}",0.0030)
wujing0209 2010-12-07
  • 打赏
  • 举报
回复
.ToString("#.#");
wujing0209 2010-12-07
  • 打赏
  • 举报
回复
.ToString("#.#");
jhobo 2007-07-31
  • 打赏
  • 举报
回复
CString strResult;
strResult.Format("%f",fData);

int nIndex;
nIndex=strResult.Find('.');
if (nIndex>=0)
{
strResult.TrimRight('0');
if (strResult.GetLength()==nIndex+1)
{
strResult=strResult.Left(nIndex);
if (strResult.IsEmpty())
strResult='0';
}
}
qwertxp 2007-07-31
  • 打赏
  • 举报
回复
想不到这么麻烦,这个问题还确实没考虑过。
ll124993513 2007-07-31
  • 打赏
  • 举报
回复


decimal dec = 2.50000;
string temp = dec.ToString();
while(true)
{
if(temp[temp.length-1]=='0')
temp=temp.RemoveAt(temp.length);
else
break;
}

int float=float.Parse(temp); //num=2.5
vrhero 2007-07-31
  • 打赏
  • 举报
回复
回复人:soaringbird()
dc.ToString("G0")
-----------------
这个才是正解...

转换成float或double可能会丢失精度...
benniaoyaofei 2007-07-31
  • 打赏
  • 举报
回复
mark
soaringbird 2007-07-31
  • 打赏
  • 举报
回复
dc.ToString("G0")
jarod_d 2007-07-31
  • 打赏
  • 举报
回复
C#没有方法可以去掉后面多余的0吗?

并不是要限制小数点后的位置,如:2.52000 得到2.52
7.00得到7

感觉做循环去掉0和.多用户访问比较浪费服务器性能.不知道有没有简单点的方法
woanon 2007-07-30
  • 打赏
  • 举报
回复
decimal dec = 2.5000M;
float flt = float.Parse(dec.ToString());



这个应该对的
Yellow198267 2007-07-30
  • 打赏
  • 举报
回复
string values=this.textBox1.Text.ToString().Trim();
string tempR="",tempL="";
try
{
tempL=values.Substring(0,values.ToString().IndexOf("."));
tempR=values.Substring(values.ToString().IndexOf(".")+1,values.ToString().Length-values.ToString().IndexOf(".")-1);
for(int i=tempR.Length-1;i>=1;i++)
{
if(tempR.Substring(i,1).ToString()=="0")
{
tempR=tempR.Substring(0,tempR.Length-1);
i=tempR.Length-2;
}
}
values=tempL.ToString()+"."+tempR.ToString();
}
catch
{
}
this.textBox1.Text=values.ToString();
tongdoudpj 2007-07-30
  • 打赏
  • 举报
回复
decimal dec = 2.5000M;
float flt = float.Parse(dec.ToString());
Console.WriteLine(dec);
Console.WriteLine(flt);
Console.Read();
--------显示结果----------------
2.5000
2.5

Good Luck!
Tony
sadever 2007-07-30
  • 打赏
  • 举报
回复
Mark
kingonehappy 2007-07-30
  • 打赏
  • 举报
回复
viena() 维也纳

第一个答案的意思是固定输出格式为小数点与小数点前后必须各有一位
2.50000碰巧符合这个特征,如果是其他数就可能不对了
=========================================================================
貌似不对吧?
decimal dec = 2555.50000m;
Console.WriteLine( dec.ToString("0.0") );
这个输出的是2555.5,也就是说小数点前不固定,小数点后有一位,是吧?


zh-wall-e 2007-07-30
  • 打赏
  • 举报
回复
谢谢 :oolongTea(顶者) 的提醒。。

我是写得快了点。。没注意那么多。。。
在这里更正一下:
temp=temp.Remove(ss.Length-1, 1)

真是不好意思
kingxiekang 2007-07-30
  • 打赏
  • 举报
回复
好象有专门格式化字符串的方法把
oolongTea 2007-07-30
  • 打赏
  • 举报
回复
zh_li_(我爸的儿子) 的答案,string没有RemoveAt的方法
viena() 维也纳的答案,输入250,得到25,也错误

这样才对吧
decimal dec = 2.50000m;
string s = dec.ToString("0.0");
if(s.EndsWith("0"))
s = s.Substring(0,s.Length -2);
加载更多回复(14)

111,097

社区成员

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

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

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