20 lines
545 B
Scala
20 lines
545 B
Scala
package fmon.util
|
|
|
|
case class Fraction(val num : Int, val denom : Int) extends Ordered[Fraction] {
|
|
def *(f : Fraction) = Fraction(num * f.num, denom * f.denom)
|
|
def *(x : Int) : Int = x * num / denom
|
|
|
|
def unary_-() : Fraction = Fraction(-num, denom)
|
|
|
|
override def compare(f : Fraction) : Int = {
|
|
(num * f.denom) compare (f.num * denom)
|
|
}
|
|
|
|
def toDouble = 1.0 * num / denom
|
|
}
|
|
|
|
class IntFraction(val x : Int) extends AnyVal {
|
|
def %% = Fraction(x, 100)
|
|
def \\ (denom : Int) = Fraction(x, denom)
|
|
def frac = Fraction(x, 1)
|
|
} |