C#保留2位小数的做法

         第一 算法实现

          保留两位的话,就用一个浮点型先乘以100,然后取整,取整完了之后,再乘以1.0,然后再除以100。
         上面这种做法是保留n位,不会四舍五入的。因为这是一个简单的做法。
          这个返回值也是double类型
float f = 0.333333333f;
int i = (int) (f*100); //乘以100,然后取整
var res=i*1.0/100; //然后乘以1.0转换为double,再除以100

         第二,用内置的方法(银行家舍入,四舍六入五取偶)

         Math.Round(0.555,2); 返回值是double
         还有类似于Decimal.Round();  
         Math.Round(f, 2);
    //银行家舍入算法
            double d2 = Math.Round(0.235, 2);
            Console.WriteLine(d2); //结果为0.24

            double d = Math.Round(0.245, 2);
            Console.WriteLine(d);  //结果为0.24

        第三,ToString来实现,这个也是银行家舍入。

         保留n位,四舍五入,返回值是string类型。
         f.ToString("#0.00");
         f.ToString("f2")

        第四,四舍五入Vs银行家舍入

         平时我们保留几位小数估计都是用在统计这方面,可以进行四舍五入。但是在银行,电子税务局,四舍五入好像还不太合理,很多都是采用的是银行家舍入。

         对于每种舍入方法,都是可能会有误差,只不过这个误差是在可允许范围之内的就好,之前也看到有人去银行体现的时候,银行进行了四舍六入,他还说,第一次赚银行的钱呢。

        

 

     

转载于:https://www.cnblogs.com/gdouzz/p/7442593.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值