Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Rational
- {
- private int m_Up = 0;
- private int m_Down = 1;
- public float Value { get => (float)m_Up / m_Down; }
- public Rational() { }
- public Rational(int up) { m_Up = up; }
- public Rational(int up, int down)
- {
- if (down == 0)
- {
- MessageBox.Show("division by zero, value = default");
- return;
- }
- m_Up = up; m_Down = Math.Abs(down);
- }
- static public Rational operator+ (Rational r1)
- {
- return new Rational(+r1.m_Up, +r1.m_Down);
- }
- static public Rational operator- (Rational r1)
- {
- return new Rational(-r1.m_Up, -r1.m_Down);
- }
- #region DefaultMath
- static public Rational operator+ (Rational r1, Rational r2)
- {
- return new Rational(r1.m_Up + r2.m_Up, r1.m_Down + r2.m_Down);
- }
- static public Rational operator- (Rational r1, Rational r2)
- {
- return new Rational(r1.m_Up - r2.m_Up, r1.m_Down - r2.m_Down);
- }
- static public Rational operator* (Rational r1, Rational r2)
- {
- return new Rational(r1.m_Up * r2.m_Up, r1.m_Down * r2.m_Down);
- }
- static public Rational operator/ (Rational r1, Rational r2)
- {
- return new Rational(r1.m_Up / r2.m_Up, r1.m_Down / r2.m_Down);
- }
- #endregion
- #region MathWithInt
- static public Rational operator +(Rational r1, int i2)
- {
- return r1 + new Rational(i2);
- }
- static public Rational operator -(Rational r1, int i2)
- {
- return r1 - new Rational(i2);
- }
- static public Rational operator *(Rational r1, int i2)
- {
- return r1 * new Rational(i2);
- }
- static public Rational operator /(Rational r1, int i2)
- {
- return r1 / new Rational(i2);
- }
- #endregion
- static public implicit operator float (Rational r1)
- {
- return r1.Value;
- }
- static public implicit operator string(Rational r1)
- {
- return $"Value = {r1.Value} Denominator = {r1.m_Up} Denominator = {r1.m_Down}";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement