zoukankan      html  css  js  c++  java
  • 中文四舍五入

    以下是中文四舍五入的算法,不是银行的四舍五入。

    public static class NumbericExtension
    {
    /// <summary>
    /// 四舍五入法
    /// </summary>
    /// <param name="sourceNum">要进行处理的数据</param>
    /// <param name="toRemainIndex">保留的小数位数</param>
    /// <returns>四舍五入后的结果</returns>
    public static decimal ChineseRound(this decimal sourceNum, int toRemainIndex)
    {
    decimal result = sourceNum;
    string sourceString = sourceNum.ToString();
    //没有小数点,则返回原数据+"."+"保留小数位数个0"
    if (!sourceString.Contains("."))
    {
    result = Convert.ToDecimal(sourceString + "." + CreateZeros(toRemainIndex));
    return result;
    }
    //小数点的位数没有超过要保留的位数,则返回原数据+"保留小数位数 - 已有的小数位"个0
    if ((sourceString.Length - sourceString.IndexOf(".") - 1) <= toRemainIndex)
    {
    result = Convert.ToDecimal(sourceString + CreateZeros(toRemainIndex - (sourceString.Length - sourceString.IndexOf(".") - 1)));
    return result;
    }
    string beforeAbandon_String = string.Empty;
    beforeAbandon_String = sourceString.Substring(0, sourceString.IndexOf(".") + toRemainIndex + 1);
    //取得如3.1415926保小数点后4位(原始的,还没开始取舍),中的3.1415
    decimal beforeAbandon_Decial = Convert.ToDecimal(beforeAbandon_String);

    //如果保留小数点后N位,则判断N+1位是否大于等于5,大于,则进一,否则舍弃。
    if (int.Parse(sourceString.Substring(sourceString.IndexOf(".") + toRemainIndex + 1, 1)) >= 5)
    {
    string toAddAfterPoint = "0." + CreateZeros(toRemainIndex - 1) + "1";
    result = beforeAbandon_Decial + Convert.ToDecimal(toAddAfterPoint);
    }
    else
    {
    result = beforeAbandon_Decial;
    }
    return result;
    }


    /// <summary>
    /// 补 "0"方法.
    /// </summary>
    /// <param name="zeroCounts">生成个数.</param>
    /// <returns></returns>
    private static string CreateZeros(int zeroCounts)
    {
    string Result = string.Empty;
    if (zeroCounts == 0)
    {
    Result = "";
    return Result;
    }
    for (int i = 0; i < zeroCounts; i++)
    {
    Result += "0";
    }
    return Result;
    }
    }

  • 相关阅读:
    [转]如何选购塑料水杯(塑料口杯、茶杯)
    【转】在sqlserver下增加MYSQL的链接服务器,实现分布式数据库开发第一步
    MySql: 查看当前登录用户,当前数据库
    python import, from xx import yy
    python class metaclass instance
    git: fatal: Not a git repository (or any of the parent directories): .git
    Python flask 基于 Flask 提供 RESTful Web 服务
    Python flask @app.route
    MySql: log 位置
    MySql: 忘记root密码
  • 原文地址:https://www.cnblogs.com/micro-chen/p/4310664.html
Copyright © 2011-2022 走看看