投稿

5月, 2020の投稿を表示しています

有理数を分数精度のまま計算するクラス(C#)

別に計算用途があったわけでもないけど、有理数を分数のまま計算するためのクラスを作成してみた。1/3が0.333...にならずに1/3のまま計算できるもの。 ソースコード ちょっと長いけど全文載せる。 class RationalNumber : IEquatable<RationalNumber>, IEquatable<long>, IComparable<RationalNumber> { private bool sign = true; private long a = 0; private long b = 1; private static Regex Pattern = new Regex("&#92s*(-?[0-9]+)&#92s*(/&#92s*([0-9]+)&#92s*)?"); //-------------------- /// <summary> /// 分子の絶対値を取得します。 /// </summary> public long Numerator { get { return a; } } /// <summary> /// 分母の絶対値を取得します。 /// </summary> public long Denominator { get { return b; } } /// <summary> /// 小数値を取得します。 /// </summary> public double DoubleValue { get { var v = (double)a / (double)b; return SignValue * v; } } /// <summary> /// 値が0であるかを取得します。 /// </summary>