四舍五入的一些简单写法(利用内置函数,算法2种写法)

本文介绍了一种用于在线零售中价格进位的算法实现。该算法将计算后的价格个位数为1-4时进位到5,个位数为6-9时进位到0。提供了两种不同的C#实现方式,一种直接使用Math类进行操作,另一种通过字符串处理完成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      //内置函数的写法

       //网上零售价和折扣价在计算结束需要进行进位,规则如下:
        //个位为1,2,3,4进位到5,例如计算后的价格为1201,则价格为1205;
        //个位为6,7,8,9进位到0,例如计算后的价格为1209.则价格为1210;
        public static string ChangePrice(double price)
        {
            int changed = 0;
            int m = (int)Math.Round(price);
            int n = (int)Math.Floor(price / 10);
            int d = m - n * 10;
            if (0 < d && d <= 4)
            {
                changed = n * 10 + 5;
            }
            else if (5 < d && d <= 9)
            {
                changed = n * 10 + 10;
            }
            else
            {
                changed = m;
            }
            return changed + "";
        }

//算法的写法
 public static string ChangePrice(double price)
        {

            int changed = 0;//改变后的值
            int m = 0;//四舍五入取整
            int n = 0;//取整数

            double temp = price;
            if (temp.ToString().IndexOf('.') > -1)
            {
                string strTemp = temp.ToString();
                strTemp = strTemp.Substring(0, strTemp.IndexOf('.'));
                n = int.Parse(strTemp) / 10;//取整数
                m = (int)Math.Round(temp);//四舍五入取整数
                int d = m - n * 10;
                if (0 < d && d <= 4)
                {
                    changed = n * 10 + 5;
                }
                else if (5 < d && d <= 9)
                {
                    changed = n * 10 + 10;
                }
                else
                {
                    changed = m;
                }

            }
            else
            {
                string TempAgain = (temp / 10).ToString();
                if (TempAgain.IndexOf('.') > -1)
                {
                    TempAgain = TempAgain.Substring(0, TempAgain.IndexOf('.'));
                    n = int.Parse(TempAgain);
                    m = int.Parse(temp.ToString());

                    int d = m - n * 10;
                    if (0 < d && d <= 4)
                    {
                        changed = n * 10 + 5;
                    }
                    else if (5 < d && d <= 9)
                    {
                        changed = n * 10 + 10;
                    }
                    else
                    {
                        changed = m;
                    }
                }
                else
                {
                    n = int.Parse(TempAgain);
                    m = int.Parse(temp.ToString());

                    int d = m - n * 10;
                    if (0 < d && d <= 4)
                    {
                        changed = n * 10 + 5;
                    }
                    else if (5 < d && d <= 9)
                    {
                        changed = n * 10 + 10;
                    }
                    else
                    {
                        changed = m;
                    }
                }


            }
            return changed + "";


        }

 

转载于:https://www.cnblogs.com/it888/p/3760963.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值