Decimal类型截取保留N位小数向上取, Decimal类型截取保留N位小数并且不进行四舍五入操作

简介: Decimal类型截取保留N位小数向上取Decimal类型截取保留N位小数并且不进行四舍五入操作 封装静态方法 public class DecimalHelper { /// /// Decimal类型截取保留N位小数并且...

Decimal类型截取保留N位小数向上取
Decimal类型截取保留N位小数并且不进行四舍五入操作

封装静态方法

    
    public class DecimalHelper
    {
        /// <summary>
        /// Decimal类型截取保留N位小数并且不进行四舍五入操作
        /// </summary>
        /// <param name="d"></param>
        /// <param name="n"></param>
        /// <returns></returns>
        public static decimal CutDecimalWithN(decimal d, int n)
        {
            string strDecimal = d.ToString();
            int index = strDecimal.IndexOf(".");
            if (index == -1 || strDecimal.Length < index + n + 1)
            {
                strDecimal = string.Format("{0:F" + n + "}", d);
            }
            else
            {
                int length = index;
                if (n != 0)
                {
                    length = index + n + 1;
                }
                strDecimal = strDecimal.Substring(0, length);
            }
            return Decimal.Parse(strDecimal);
        }

        /// <summary>
        ///  Decimal类型截取保留N位小数向上取
        /// </summary>
        /// <param name="d"></param>
        /// <param name="n"></param>
        /// <returns></returns>
        public static decimal Ceiling(decimal d, int n)
        {
            decimal t = decimal.Parse(Math.Pow(10, n).ToString());
            d = Math.Ceiling(t * d);
            return d / t;
        }
    }

测试方法:

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine();
            decimal Dec = 12.12345M;
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine($"{Dec} 保留{i} 位小数不进行四舍五入操作:" + DecimalHelper.CutDecimalWithN(Dec, i));
            }
            Console.WriteLine();
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine($"{Dec} 保留{i} 位小数向上取整操作:" + DecimalHelper.Ceiling(Dec, i));
            }
            Console.Read();
        }
    }

博客内容仅代表个人观点,如发现阐述有误,麻烦指正,谢谢!
目录
相关文章
|
前端开发 JavaScript API
【Vue3】组件数据懒加载
【Vue3】组件数据懒加载
382 0
|
10月前
|
数据安全/隐私保护
基于双PI+SVPWM的船舶用PMSM控制系统simulink建模与仿真
本课题基于双PI控制器与SVPWM技术,构建船舶用永磁同步电机(PMSM)控制系统的Simulink模型并进行仿真。系统采用电流内环与速度外环的双闭环结构,实现快速响应、高精度的电流与速度控制。SVPWM模块将电压参考值转化为三相PWM信号驱动逆变器。通过MATLAB2022a完成建模与仿真,验证了系统在高性能、环境适应性及控制精度方面满足船舶推进需求,适用于复杂海洋工况。
|
机器学习/深度学习 人工智能 自然语言处理
AI技术在自然语言处理中的应用
随着人工智能技术的不断发展,自然语言处理(NLP)已经成为了一个重要的应用领域。本文将介绍一些常见的NLP任务和算法,并通过代码示例来展示如何实现这些任务。我们将讨论文本分类、情感分析、命名实体识别等常见任务,并使用Python和相关库来实现这些任务。最后,我们将探讨NLP在未来的发展趋势和挑战。
C 作用域详解
在 C 语言中,作用域决定了变量和函数的可见性和生命周期,包括块作用域、函数作用域、文件作用域和全局作用域。块作用域内的变量仅在块内有效,函数作用域内的变量在整个函数内有效,文件作用域内的全局变量和函数在整个文件内有效,而全局作用域内的变量和函数在整个程序运行期间有效。作用域的优先级遵循局部变量优先的原则,局部变量会遮蔽同名的全局变量。变量的生命周期分为局部变量(函数调用时创建和销毁)、全局变量(程序开始时创建和结束时销毁)以及静态变量(整个程序期间有效)。理解作用域有助于避免命名冲突和错误,提高代码的可读性和可维护性。
|
JSON 小程序 前端开发
简单描述下微信小程序的相关文件以及类型?
简单描述下微信小程序的相关文件以及类型?
327 1
|
Oracle 关系型数据库
Oracle 语句的执行顺序
1、FROM 子句:执行顺序为从后往前、从右到左。数据量较少的表尽量放在后面。 2、WHERE子句:执行顺序为自下而上、从右到左。将能过滤掉最大数量记录的条件写在WHERE 子句的最右。 3、GROUP BY:执行顺序从左往右分组,最好在GROUP BY前使用WHERE将不需要的记录在GROUP BY之前过滤掉。 4、HAVING 子句:消耗资源。尽量避免使用,HAVING 会在检索
2484 0
|
缓存 关系型数据库 MySQL
MYSQL数据优化常用配置参数
MYSQL数据优化常用配置参数
734 0
|
弹性计算
阿里云IP地址在哪查询?
阿里云服务器IP地址在哪查看?在云服务器ECS管理控制台即可查看,阿里云服务器IP地址包括公网IP和私有IP,阿里云百科分享阿里云服务器IP地址查询方法
726 0
|
机器学习/深度学习 人工智能 编解码
AAAI/CVPR论文详解 | 万字长文了解可解释AI工具及技术的最新进展(1)
AAAI/CVPR论文详解 | 万字长文了解可解释AI工具及技术的最新进展
516 0