如何去除小数点后面多余的零

terratecsz 2012-06-20 11:19:34
我是C#新手,想要去除小数点后面多余的零
比如说我在数据库中的数都是12.000或者12.120这种类型的,我想把后面不想要的零去除,比如12.000显示为12,12.120显示为12.12,请大虾指教啊
...全文
6557 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
chuzhaowei 2012-11-10
  • 打赏
  • 举报
回复
.ToString("G0")
kangyangyang 2012-11-10
  • 打赏
  • 举报
回复
select ROUND('2012.0000',2) --结果 2012
kangyangyang 2012-11-10
  • 打赏
  • 举报
回复
其实我觉得你应该在查询的时候就可以把这个问题解决。 select ROUND('2012.21212',2) --结果 2012.21
f15173216722 2012-11-10
  • 打赏
  • 举报
回复
同为新手,参考一下吧,效率就别提了,还有比我的更差的吗?
 /// <summary>
        /// 去除数字中无用的0,使用前确保数字合法。
        /// </summary>
        /// <param name="strNu"></param>
        /// <returns></returns>
        private string RemoveZero(string strNu)
        {
            string[] numArr = strNu.Split('.');
            for (int k = 0; k < numArr[0].Length; k++)//去除小数点钱多余的0,比如000.11处理为0.11 根据需要保留
            {
                if (numArr[0].ToCharArray()[k] != '0')
                {
                    numArr[0] = numArr[0].Substring(k, numArr[0].Length);
                    break;
                }
                else
                {
                    numArr[0] = "0";
                }
            }
            if (numArr.Length < 2)//判断是否有小数点
            {
                return numArr[0];
            }
            string strNum = numArr[1];
            char[] cArr = strNum.ToCharArray();
            int index = -1;
            for (int i = 0; i < strNum.Length; i++)//获取最后一个出现非0的位置
            {
                if (cArr[i] != '0')
                {
                    index = i;
                }
            }
            if (index == -1)//判断小数点后是否全是0
            {
                return  numArr[0];
            }
            else
            {
                return  numArr[0] + "." + strNum.Substring(0, index + 1);
            }
        }
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 的回复:]

当然除了找到一种合适的格式化表达式以外,你也可以自己写“万能的”格式化函数,例如:HTML code
Text='<%# GetMyText((double)Eval("abc")) %>'
C# code
protected string GetMyText( double x)
{
return string.Format("0.###",x);Get
}
[/Quote]
0.### 这个格式不是double类型tostring后面才能用的吗?
fsstolw 2012-06-23
  • 打赏
  • 举报
回复
请教一下,下面这句中:
string.Format("0.###",x);
0.###这3个#是否表示小数点后保留3位数呢?

[Quote=引用 17 楼 的回复:]
当然除了找到一种合适的格式化表达式以外,你也可以自己写“万能的”格式化函数,例如:

HTML code

Text='<%# GetMyText((double)Eval("abc")) %>'


C# code

protected string GetMyText( double x)
{
return string.Format("0.###",x);Get
……
[/Quote]
EnForGrass 2012-06-23
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
当然除了找到一种合适的格式化表达式以外,你也可以自己写“万能的”格式化函数,例如:
Text='<%# GetMyText((double)Eval("abc")) %>'
protected string GetMyText( double x)
{
return string.Format("0.###",x);Get
}
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
我是C#新手,想要去除小数点后面多余的零
比如说我在数据库中的数都是12.000或者12.120这种类型的,我想把后面不想要的零去除,比如12.000显示为12,12.120显示为12.12,请大虾指教啊
[/Quote]
例如:
Text='<%# Eval("abc","{0:N2}") %>'


搞懂绑定表达式,省得写一大堆代码。
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

text.trim('0').trim('.')
[/Quote]
这种做法是不行的,如果后面有多个0,还是需要递归去解决
double.Parse(str).ToString();算是好理解的方法了。另外一种但是使用正则表达式来控制字符串格式,lz有想法可以去请教正则高手。
至于lz使用dataset作为数据源,可以再datatable中添加一个,在这一列的属性中以
return double.Parse(str).ToString();的形式来转换显示格式
stiff_neck 2012-06-22
  • 打赏
  • 举报
回复
9楼正解。
baixue11270526 2012-06-22
  • 打赏
  • 举报
回复
Math.Round不行吗,可以不保留小数位。
darrenjj 2012-06-22
  • 打赏
  • 举报
回复
string s = "12.000";
s = s.TrimEnd('0').TrimEnd('.');
Console.Write(s);
Console.ReadLine();
vipboyvipboy 2012-06-21
  • 打赏
  • 举报
回复
tostring本身就好formate的,可用楼上的方法很ok。。
修改一下昵称 2012-06-21
  • 打赏
  • 举报
回复
<%#(Convert.ToInt32(Eval("Price"))).ToString("0.00")%>
nikolaichow 2012-06-21
  • 打赏
  • 举报
回复
text.trim('0').trim('.')
Diack 2012-06-21
  • 打赏
  • 举报
回复
GridView的列有个DataFormatString属性
设置DataFormatString值就可以了
具体值设置参考
http://hi.baidu.com/yiyizh000/blog/item/eb34303ed44fe6ee838b1318.html
阿冷 2012-06-21
  • 打赏
  • 举报
回复
private static string str(double num)
{
string arraylist=Convert.ToString(num);
int temp=0;
string str1="";
for(int i=arraylist.Length-1;i>=0;i--)
{
if(arraylist[i].ToString()!="0")
{
temp=i;
break;
}
}
for(int i=0;i<=temp;i++)
{
str1+=arraylist[i].ToString();
}
return str1;
}
阿冷 2012-06-21
  • 打赏
  • 举报
回复
NumberFormat nf = NumberFormat.getInstance();
nf.format(12.000);
xujinli88 2012-06-21
  • 打赏
  • 举报
回复
public String removeTailZero(BigDecimal b) {
String s = b.toString();
int i, len = s.length();
for (i = 0; i < len; i++)
if (s.charAt(len - 1 - i) != '0')
break;
if (s.charAt(len - i - 1) == '.')
return s.substring(0, len - i - 1);
return s.substring(0, len - i);
}
加载更多回复(4)
在Excel使用过程中,运用一些技巧会使得我们的工作效率提高很多。而这些技巧往往又被忽略或忘记怎么去使用。本套课程基于此整理了一些Excel方面的技巧,这些呢为学习笔记集锦,前后章内容不存在连贯性,仅整理一些常用的技巧与大家分享。【说明:Excel为2013版本,无下载资料,请参看课程视频学习。】l  本课程知识点l  第1节:概述l  第2节:Excel大批量数据自动填写灵活妙用经验分享l  第3节:巧为Excel2013单元格的文本内容增加拼音l  第4节:Excel在单元格内实现自动换行l  第5节:Excel快速使用函数计算不同区域数据l  第6节:Excel单元格超长内容不能显示全巧妙设置l  第7节:巧妙运用之Excel单元格中自动快速输入带有小数点的数值l  第8节:Excel巧妙使用回车键快速粘贴l  第9节:职场必会Excel函数经典应用,使用And函数多条件判断l  第10节:Excel函数经典应用之IF函数条件判断范例l  第11节:Excel技巧之巧妙使用不同颜色区分不同类型数据l  第12节:巧妙快速调整Excle所有单元格或局部单元格l  第13节:巧妙快速切换Excel单元格回车后的纵向输入和横向输入l  第14节:巧妙理解记忆Excel公式中的相对引用和绝对引用l  第15节:Excel单元格文风快速两端对齐l  第16节:Excel2013文档内容快速居中打印l  第17节:excel直接使用模板制作精美格式样式l  第18节: excel使用中可以直接使用翻译功能中英文互译l  第19节:不需要截图工具直接使用excel复制图片l  第20节:excel粘贴也可以多种方式选择了l  第21节:巧为excel单元格画双划线l  第22节:为excel的文字或数字添加单划线或双划线l  第23节:excel连续微调单元格内容字号的大小l  第24节: 快速的将长文本内容变为自适应多行文本l  第25节:excel多单元格合并居中l  第26节:单元格内容连续微调缩进量l  第27节:将文本内容倾斜到任意角度l  第28节:单元格内容多种形式的对齐方式l  第29节:快速将数据转换为会计专用数据l  第30节:快速为数据增加或减少小数位数

110,572

社区成员

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

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

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