61 lines
1.9 KiB
Markdown
Vendored
61 lines
1.9 KiB
Markdown
Vendored
# mruby-rational
|
|
|
|
This mrbgem provides a `Rational` class for mruby, allowing you to work with rational numbers (fractions).
|
|
|
|
## Usage
|
|
|
|
To use the `Rational` class, you first need to include the mrbgem in your mruby build.
|
|
|
|
### Include in build_config.rb
|
|
|
|
Add the following line to your `build_config.rb` file:
|
|
|
|
```ruby
|
|
conf.gem :core => 'mruby-rational'
|
|
```
|
|
|
|
### Creating Rational Objects
|
|
|
|
You can create `Rational` objects using the `Rational()` method:
|
|
|
|
```ruby
|
|
r1 = Rational(1, 2) # Represents 1/2
|
|
r2 = Rational(3, 4) # Represents 3/4
|
|
```
|
|
|
|
### Arithmetic Operations
|
|
|
|
The `Rational` class supports standard arithmetic operations:
|
|
|
|
```ruby
|
|
r_add = Rational(1, 2) + Rational(1, 3) # (5/6)
|
|
r_sub = Rational(1, 2) - Rational(1, 3) # (1/6)
|
|
r_mul = Rational(1, 2) * Rational(1, 3) # (1/6)
|
|
r_div = Rational(1, 2) / Rational(1, 3) # (3/2)
|
|
```
|
|
|
|
## Available Methods
|
|
|
|
The `Rational` class provides the following important methods:
|
|
|
|
- `numerator`: Returns the numerator of the rational number.
|
|
- `denominator`: Returns the denominator of the rational number.
|
|
- `to_f`: Converts the rational number to a `Float`.
|
|
- `to_i`: Converts the rational number to an `Integer` (truncates towards zero).
|
|
- `to_s`: Returns a string representation of the rational number (e.g., "1/2").
|
|
- `inspect`: Returns a string representation suitable for debugging (e.g., "(1/2)").
|
|
- `==`: Checks for equality with another number.
|
|
- `<=>`: Compares the rational number with another number.
|
|
- `positive?`: Returns `true` if the rational number is greater than zero.
|
|
- `negative?`: Returns `true` if the rational number is less than zero.
|
|
|
|
## Error Handling
|
|
|
|
The mrbgem handles common errors such as:
|
|
|
|
- **DivisionByZeroError**: Raised when attempting to create a rational number with a denominator of zero.
|
|
- **RangeError**: Raised in case of integer overflow during calculations.
|
|
|
|
## License
|
|
|
|
mruby-rational is licensed under the MIT License. See LICENSE for details.
|