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

C# 保留2位小数几种场景总结

时间:2019-02-14 10:24:27      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:format   res   style   去掉   test   parse   问题   div   国际   

场景1:

先说一下ToString("0.00##")中0和#的区别:
  0 代表占位的。如果ToString("0.00") 这样就是保留两位小数,无论小数有多少位或者无小数,结果都是两位小数。例如 1.1234 那么结果是1.12。如果是1.2 那么结果会补零,为1.20。
  # 代表后面的不是零就被保留,如果是0就去掉。例如ToString("0.##") 那么1.20的话结果是1.2

对于场景1的问题,默认有两位就是00,其它的如果大于两位就不是零就保留的话,可以下面这样写:

double dd = 1.2530;
            string ret = dd.ToString("0.00####"); 
            Response.Write("A1:" + ret + "<br/>");

            dd = 1.0;
            ret = dd.ToString("0.##"); 
            Response.Write("A2:" + ret + "<br/>");

            dd = 1.1;
            ret = dd.ToString("0.##"); 
            Response.Write("A3:" + ret + "<br/>");


            dd = 123;
            ret = dd.ToString("0.##"); 
            Response.Write("A4:" + ret + "<br/>");

 

场景2:

  根据国际惯例,有时候我们需要对超出的位数“四舍五入”。用C# 实现保留两位小数的方法有很多,常用的总结如下:

1、Math.Round(0.333333,2);//按照四舍五入的国际标准
2、double dbdata=0.335333; string str1=String.Format("{0:F}",dbdata);//默认为保留两位
3、float i=0.333333; int j=(int)(i * 100); i = j/100;
4、decimal.Round(decimal.Parse("0.3333333"),2)
5、private System.Globalization.NumberFormatInfo nfi = new System.Globalization.NumberFormatInfo();

  float test=0.333333f;

  nfi.NumberDecimalDigits=2;

  string result=test.ToString("N", nfi);


6、string result= String.Format("{0:N2}",Convert.ToDecimal("0.333333").ToString()); 
7、Convert.ToDecimal("0.33333333").ToString("0.00");

C# 保留2位小数几种场景总结

标签:format   res   style   去掉   test   parse   问题   div   国际   

原文地址:https://www.cnblogs.com/Fooo/p/10373092.html

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