Rations
A rational number type for Swift.
Rations is a rational number value type for Swift. It allows you to perform calculations on fractional numbers without the loss of precision caused by floating-point arithmetic. Rational numbers are useful for representing currency and for other applications where exact results, not approximations, are desired.
For example, the fraction 1/3
can be exactly represented as a rational number, but not as a floating point number:
let x: Rational = 1 / 3
// x == 1/3
let y: Double = 1 / 3
// y == 0.3333333333333333
Rations does have a performance penalty compared to Swift’s native floating point types. You might not want to use Rations in performance-sensitive areas. Each operation that returns a rational number involves calculating the greatest common divisor of the numerator and denominator using the Euclidean algorithm.
Install
Rations requires Swift 4.2 or higher. It supports iOS, macOS, tvOS, watchOS, and Linux.
Swift Package Manager
Add the following line to your Package.swift
:
.package(url: "https://github.com/erikstrottmann/Rations.git", from: "0.1.0"),
CocoaPods
Add the following line to your Podfile
:
pod 'Rations', '~> 0.1.0'
Carthage
Add the following line to your Cartfile
:
github "erikstrottmann/Rations" ~> 0.1.0
Usage
let x: Rational = 1 / 4
let y: Rational = 2 / 3
let z = x + y
// z == 11/12
Contributing
Open an issue or a pull request!
License
MIT licensed, © 2018 Erik Strottmann.