『QQ:1353814576』

基于C#人名币基础加减法换算最终得出<元角分>的计算结果代码实现


网上逛论坛的是否看到一个关于人民币基础换算的需求 虽然已经有网友回答了 但是个人感觉代码基础金额换算虽然实现了但逻辑上不是很理想 于是自己就也写了个 实现思路就是先将元角分求和换算成分然后再进行求和或求差,最后再将得到的结果转换成元角分。

附录:网友的需求

定义一个人民币RMB类,其中成员包括
1.定义元、角、分三个字段,以及相应的构造函数。
2.对三个字段设置读写属性;
3.定义Print函数,用于输出RMB类数值:元角*分;
4.在类中定义+、-两个操作符的重载(这个当时不会就没写)。对两个RMB对象进行加减操作,如3元5角8分+4元2角3分=7元8角1分

    /// <summary>
    /// 人民币RMB类
    /// </summary>
    public class RMB
    {
        #region 定义元、角、分三个字段 并设置读写属性
        /// <summary>
        /// 元
        /// </summary>
        public int Y { get; set; }
        /// <summary>
        /// 角
        /// </summary>
        public int J { get; set; }
        /// <summary>
        /// 分
        /// </summary>
        public int F { get; set; }
        #endregion

        #region 构造函数
        public RMB(int Y,int J,int F) {
            this.Y = Y;
            this.J = J;
            this.F = F;
        }
        #endregion

        /// <summary>
        /// Print函数,用于输出RMB类数值:元角*分;
        /// </summary>
        public void Print()
        {
            Console.WriteLine($"人民币计算结果为:{Y}元{J}角{F}分");
        }

        #region 定义+、-两个操作符的重载
        /// <summary>
        /// +
        /// </summary>
        /// <param name="Y"></param>
        /// <param name="J"></param>
        /// <param name="F"></param>
        public void Plus(int Y, int J, int F)
        {
            //计算换算成分
            int F1 = ConvertToF(this.Y, this.J, this.F);//基数
            int F2 = ConvertToF(Y, J, F);//加数
            //求和
            int sum = F1 + F2;
            //结果转换为元角分
            this.ConvertToYJF(sum);

        }
        /// <summary>
        /// -
        /// </summary>
        /// <param name="Y"></param>
        /// <param name="J"></param>
        /// <param name="F"></param>
        public void Reduce(int Y, int J, int F)
        {
            //计算换算成分
            int F1 = ConvertToF(this.Y, this.J, this.F);//基数
            int F2 = ConvertToF(Y, J, F);//加数
            int differ = F1 - F2;
            //结果转换为元角分
            this.ConvertToYJF(differ);
        }
        #endregion

        /// <summary>
        /// 将元角分换算成分
        /// </summary>
        /// <param name="Y"></param>
        /// <param name="J"></param>
        /// <param name="F"></param>
        /// <returns></returns>
        private int ConvertToF(int Y, int J, int F)
        {
            int f0 = F;//分
            int f1 = J * 10;//角转分
            int f2 = Y * 10 * 10;//元转分
            int f = f0 + f1 + f2;//分值总和
            return f;
        }

        /// <summary>
        /// 将分转换为元角分
        /// </summary>
        /// <param name="TotalF"></param>
        private void ConvertToYJF(int TotalF)
        {
            int J = TotalF / 10;
            int F = TotalF - (J * 10);
            int Y = J / 10;
            J = J - (Y * 10);

            this.Y = Y;
            this.J = J;
            this.F = F;
        }
    }

运行结果

基于C#人名币基础加减法换算最终得出<元角分>的计算结果代码实现