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

场景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");

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

时间: 2024-08-04 04:46:36

C# 保留2位小数几种场景总结的相关文章

Java-小技巧-005-double类型保留两位小数4种方法

4种方法,都是四舍五入,例: import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFormat; public class format { double f = 111231.5585; public void m1() { BigDecimal bg = new BigDecimal(f); double f1 = bg.setScale(2, BigDecimal.ROUND

java保留两位小数4种方法

4种方法,都是四舍五入,例: import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFormat; public class format {     double f = 111231.5585;     public void m1() {         BigDecimal bg = new BigDecimal(f);         double f1 = bg.setS

java: 保留两位小数4种方法

import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFormat; public class format { double f = 111231.5585; public void m1() { BigDecimal bg = new BigDecimal(f); double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubl

SqlServer保留几位小数的两种做法

SqlServer保留几位小数的两种做法   数据库里的 float momey 类型,都会精确到多位小数.但有时候 我们不需要那么精确,例如,只精确到两位有效数字. 解决: 1. 使用 Round() 函数,如 Round(@num,2) 参数 2 表示 保留两位有效数字. 2. 更好的方法是使用 Convert(decimal(18,2),@num) 实现转换,decimal(18,2) 指定要保留的有效数字. 这两个方法有一点不同:使用 Round() 函数,如果 @num 是常数,如 R

Java保留两位小数的几种做法

1.  String类型数字始终保留两位小数 public static void main(String[] args) {   DecimalFormat format = new DecimalFormat("0.00");  String abc ="100.456";  String a = format.format(new BigDecimal(abc)); System.out.println(a); } 2. 另外几种办法 原文 http://mo

Double值保留两位小数的四种方法

public class DoubleTest { //保留两位小数第三位如果大于4会进一位(四舍五入) double f = 6.23556; /** *使用精确小数BigDecimal */ public void fun1() { BigDecimal bg = new BigDecimal(f); /** * 参数: newScale - 要返回的 BigDecimal 值的标度. roundingMode - 要应用的舍入模式. 返回: 一个 BigDecimal,其标度为指定值,其非

Java float保留两位小数或多位小数

转自:Java float保留两位小数或多位小数 方法1:用Math.round计算,这里返回的数字格式的. float price=89.89; int itemNum=3; float totalPrice=price*itemNum; float num=(float)(Math.round(totalPrice*100)/100);//如果要求精确4位就*10000然后/10000 方法2:用DecimalFormat 返回的是String格式的.该类对十进制进行全面的封装.像%号,千分

SQL 保留两位小数的实现方式

问题: 客户要求,跟金额相关的数据,打印出来要保留两位小数,比如:13.2/13.200要显示为13.20: 分析: 首先查看数据库中的数据定义,均为decimal(12,2) ,直接通过数据库查询的结果也会保留两位小数,但是代码处理后,却会忽略掉最后一个“零”位. 此处有两个解决方案: 一. 代码中处理,检测到为金额字段,做特殊处理:二.修改查询SQL语句去规避此问题: 第一种方法,无论通过数据类型还是字段名称,都不好判断是否为金额,故选用第二种方法. SQL中保留两位小数的方法有三种,(第2

[Java基础] Java float保留两位小数或多位小数

方法1:用Math.round计算,这里返回的数字格式的. float price=89.89; int itemNum=3; float totalPrice=price*itemNum; float num=(float)(Math.round(totalPrice*100)/100);//如果要求精确4位就*10000然后/10000 方法2:用DecimalFormat 返回的是String格式的.该类对十进制进行全面的封装.像%号,千分位,小数精度.科学计算. float price=