基于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;
}
}
运行结果