码迷,mamicode.com
首页 > Windows程序 > 详细

c#中decimal的去0显示

时间:2017-06-26 18:57:45      阅读:326      评论:0      收藏:0      [点我收藏+]

标签:rgs   click   cli   4.0   格式化   ace   format   网上   链接   

在近来的开发中,遇到到了decimal中显示0的问题,搞了很久才搞好了,现在就简单介绍一下其中一小部分,其他的网上很上很多

public static string DecimalToString(decimal d)
        {
            return d.ToString("#0.######");
        }

 

这个的显示很简单给几个例子就懂了,注意第一个结果,是会四舍五入的

private void button1_Click(object sender, EventArgs e)
        {
            decimal d0 = 0.0000006m;
            decimal d1 = 0.005000m;
            decimal d2 = 1.00005m;
            decimal d3 = 200.00000m;
            decimal d4 = 200.00006m;
            Console.WriteLine(DecimalToString(d0));
            Console.WriteLine(DecimalToString(d1));
            Console.WriteLine(DecimalToString(d2));
            Console.WriteLine(DecimalToString(d3));
            Console.WriteLine(DecimalToString(d4));
        }

结果如下:

0.000001
0.005
1.00005
200
200.00006

后面的0会给去除,如果小于0的数,0个位还是0,这样就比较符合用户的需求的习惯。

再附加上#和0这两个符号的说明:

以下文字取自:链接

 

5、零占位符和数字占位符

string.Format("{0:0000.00}", 12394.039) 结果为:12394.04

string.Format("{0:0000.00}", 194.039) 结果为:0194.04

string.Format("{0:###.##}", 12394.039) 结果为:12394.04

string.Format("{0:####.#}", 194.039) 结果为:194

下面的这段说明比较难理解,多测试一下实际的应用就可以明白了。
零占位符:
如果格式化的值在格式字符串中出现“0”的位置有一个数字,则此数字被复制到结果字符串中。小数点前最左边的“0”的位置和小数点后最右边的“0”的位置确定总在结果字符串中出现的数字范围。
“00”说明符使得值被舍入到小数点前最近的数字,其中零位总被舍去。

数字占位符:
如果格式化的值在格式字符串中出现“#”的位置有一个数字,则此数字被复制到结果字符串中。否则,结果字符串中的此位置不存储任何值。 
请注意,如果“0”不是有效数字,此说明符永不显示“0”字符,即使“0”是字符串中唯一的数字。如果“0”是所显示的数字中的有效数字,则显示“0”字符。 
“##”格式字符串使得值被舍入到小数点前最近的数字,其中零总被舍去。

 

 

注意:这里是说有效数字,所以如果是2.00300的话2到3之间的0是有效数字,3后面的0就不是有效数字了,所以会去除。原理大概是这样,如果有补充可以评论或者联系本人。

c#中decimal的去0显示

标签:rgs   click   cli   4.0   格式化   ace   format   网上   链接   

原文地址:http://www.cnblogs.com/Jeremy2001/p/7081748.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!