zoukankan      html  css  js  c++  java
  • C# 四舍五入

    刚刚一哥们要解决这样一个问题:
    用三种方法过滤三个数字,这三个方法的作用分别是:
    完全舍掉小数点后面的小数 / 无条件进位 / 四舍五入

    前两种可以到msdn里面找到对应的方法,分别是 Math.Floor() 和 Math.Ceiling() 。

    可“四舍五入”就找不到了,找到了一个所谓的“五舍六入”。
    注:其实 Math.Round() 也不是纯粹的“五舍六入”,有一定的“猫腻儿”,其相关请查阅msdn。

    后感觉想要做到“四舍五入”好像也不是很难,故尝试去写这个Method,代码如下:
    using System;

    class CustomRound
    {
        
    public static void Main() 
        {
            
    decimal rsa = CustomRound.MyRound(2300.49m);
            
    decimal rsb = CustomRound.MyRound(2300.50m);

            Console.WriteLine(rsa);
            Console.WriteLine(rsb);
        }

        
    public static decimal MyRound(decimal num)
        {
            
    decimal dcNum = num;
            
    double dbNum = Convert.ToDouble(dcNum);
            
    double iNum = Math.Floor(dbNum);
            
    double cNum = dbNum - iNum;

            
    if (cNum >= 0.5)
            {
                cNum 
    = 1;
            }
            
    else
            {
                cNum 
    = 0;
            }

            
    decimal dcCNum = Convert.ToDecimal(cNum);
            
    decimal dcINum = Convert.ToDecimal(iNum);

            
    return dcINum + dcCNum;
        }
    }

    因为要求进/出都是decimal类型,所以里面有很多的转换过程,看着较乱,可以再整理。
    该method只经过了简单的测试,使用之前建议多做一些临界数据测试。
  • 相关阅读:
    vue cli3的多环境配置
    【Unity】VSync垂直同步
    css控制中文单词不拐行
    Spring aop 自定义注解 注解声明在类上 aop 前置通知不生效?
    校验日期格式{YYYYMMDD的 java代码
    Spring的@ExceptionHandler注解使用方法
    Pointcut注解表达式@target、@annotation、@within、this、target、within等
    Redisson的简单使用
    JoinPoint和ProceedingJoinPoint区别
    自定义注解详细介绍
  • 原文地址:https://www.cnblogs.com/publicbill/p/325749.html
Copyright © 2011-2022 走看看