前阵子开始想做成一个完备的分数类,昨天有时间进行了实现,今天再看代码一团糟。
于今天进行重构,尚未完成,待续。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace RainbowFraction
{
public struct RainbowFraction : IComparable, IComparable<RainbowFraction>, IEquatable<RainbowFraction>
{
#region 字段
private long _numerator;
private long _denominator;
#endregion
#region 属性
/// <summary>
/// 分子
/// </summary>
public long Numerator
{
set
{//分母分子不能同为负
if (value * _denominator >= 0)
{
_numerator = Math.Abs(value);
_denominator = Math.Abs(_denominator);
}
else
{
_numerator = Math.Abs(value) * -1;
_denominator = Math.Abs(_denominator);
}
}
get { return _numerator; }
}
/// <summary>
/// 分母
/// </summary>
public long Denominator
{
get { return _denominator; }
set
{//分母分子不能同为负
if (value != 0)
{
if (_numerator * value >= 0)
{
_numerator = Math.Abs(_numerator);
_denominator = Math.Abs(value);
}
else
{
_numerator = Math.Abs(_numerator) * -1;
_denominator = Math.Abs(value);
}
}
else
{
throw new RainbowFractionException("分母不可为0.");
}
}
}
/// <summary>
/// 值
/// </summary>
public double Value
{
get { return (double)Numerator / (double)Denominator; }
}
#endregion
#region 构造
/// <summary>
/// 以分子分母构造
/// </summary>
/// <param name="srcNum"></param>
/// <param name="srcDen"></param>
public RainbowFraction(long srcNum, long srcDen)