pretty_round 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/LICENSE +22 -22
- data/README.md +98 -89
- data/examples/example.rb +32 -32
- data/examples/example2.rb +19 -19
- data/lib/pretty_round/core.rb +113 -0
- data/lib/pretty_round.rb +3 -112
- data/test/test_pretty_round.rb +273 -251
- metadata +7 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 7686e8cacf564521de57d2e567b3621bae97da5bad44581ea6741d004b9d49f3
|
4
|
+
data.tar.gz: '0018d0c5354ddc58f816675d3c40dfb5c43e276db6d831413a6e6214762409ef'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9bbd6edc1553103440c5efb95b047024d7fa0ddebd30a837d7d5bf346cad72f101cf722baf5c593bd50081aaea046c009690a5a83ae075cf95a3bf4a85c91b2b
|
7
|
+
data.tar.gz: 35f4e8496f1733bae06955c74c6ae1422d48fc3e9d2ee85797734d73ad0847159736eae135ec7fb024e941be786bb6325b4a45677f683a4411fc20a8cc5446a0
|
data/LICENSE
CHANGED
@@ -1,22 +1,22 @@
|
|
1
|
-
The MIT License (MIT)
|
2
|
-
|
3
|
-
Copyright (c) 2015 diaphragm
|
4
|
-
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
7
|
-
in the Software without restriction, including without limitation the rights
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
10
|
-
furnished to do so, subject to the following conditions:
|
11
|
-
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
13
|
-
copies or substantial portions of the Software.
|
14
|
-
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
-
SOFTWARE.
|
22
|
-
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2015 diaphragm
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
22
|
+
|
data/README.md
CHANGED
@@ -1,89 +1,98 @@
|
|
1
|
-
ruby-pretty-round
|
2
|
-
================
|
3
|
-
This gem add useful numerical rounding methods to `Numeric` class as shown below.
|
4
|
-
- round to nearest multiple
|
5
|
-
- round with significant digits
|
6
|
-
|
7
|
-
Install
|
8
|
-
================
|
9
|
-
`$ gem install pretty_round`
|
10
|
-
|
11
|
-
Usage
|
12
|
-
================
|
13
|
-
```rb
|
14
|
-
require "pretty_round"
|
15
|
-
|
16
|
-
x = 123.456
|
17
|
-
|
18
|
-
# round with precision
|
19
|
-
x.roundup #=> 124
|
20
|
-
x.rounddown(2) #=> 123.45
|
21
|
-
|
22
|
-
# round to nearest multiple
|
23
|
-
x.mceil(50) #=> 150
|
24
|
-
x.mfloor(25) #=> 100
|
25
|
-
x.mroundup(2) #=> 124
|
26
|
-
x.mrounddown(0.3) #=> 123.3
|
27
|
-
x.mround(9.87) #=> 128.31
|
28
|
-
|
29
|
-
# round with significant digit
|
30
|
-
x.sceil(1) #=> 200
|
31
|
-
x.sfloor(2) #=> 120
|
32
|
-
x.sroundup(3) #=> 124
|
33
|
-
x.srounddown(4) #=> 123.4
|
34
|
-
x.sround(5) #=> 123.46
|
35
|
-
```
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
.
|
57
|
-
|
58
|
-
.
|
59
|
-
.
|
60
|
-
.
|
61
|
-
.
|
62
|
-
.
|
63
|
-
.
|
64
|
-
.
|
65
|
-
.
|
66
|
-
.
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
```
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
```
|
88
|
-
1.
|
89
|
-
|
1
|
+
ruby-pretty-round
|
2
|
+
================
|
3
|
+
This gem add useful numerical rounding methods to `Numeric` class as shown below.
|
4
|
+
- round to nearest multiple
|
5
|
+
- round with significant digits
|
6
|
+
|
7
|
+
Install
|
8
|
+
================
|
9
|
+
`$ gem install pretty_round`
|
10
|
+
|
11
|
+
Usage
|
12
|
+
================
|
13
|
+
```rb
|
14
|
+
require "pretty_round"
|
15
|
+
|
16
|
+
x = 123.456
|
17
|
+
|
18
|
+
# round with precision
|
19
|
+
x.roundup #=> 124
|
20
|
+
x.rounddown(2) #=> 123.45
|
21
|
+
|
22
|
+
# round to nearest multiple
|
23
|
+
x.mceil(50) #=> 150
|
24
|
+
x.mfloor(25) #=> 100
|
25
|
+
x.mroundup(2) #=> 124
|
26
|
+
x.mrounddown(0.3) #=> 123.3
|
27
|
+
x.mround(9.87) #=> 128.31
|
28
|
+
|
29
|
+
# round with significant digit
|
30
|
+
x.sceil(1) #=> 200
|
31
|
+
x.sfloor(2) #=> 120
|
32
|
+
x.sroundup(3) #=> 124
|
33
|
+
x.srounddown(4) #=> 123.4
|
34
|
+
x.sround(5) #=> 123.46
|
35
|
+
```
|
36
|
+
|
37
|
+
Refinements
|
38
|
+
----------------
|
39
|
+
When `require 'pretty_round'`, rounding methods are included in **global scope**.
|
40
|
+
To include in limited scope, please load `pretty_round/core` and use refinements.
|
41
|
+
```rb
|
42
|
+
require 'pretty_round/core'
|
43
|
+
using PrettyRound
|
44
|
+
```
|
45
|
+
|
46
|
+
Rounding direction
|
47
|
+
================
|
48
|
+
- `#*ceil` / `#*floor`: These methods round to the positive / negative infinity direction. Its behavior is same as built-in `#ceil`, `#floor`.
|
49
|
+
- `#*roundup` / `#*rounddown`: These methods round to far from / near to 0 direction.
|
50
|
+
- `#*round`: These methods round off the absolute value, does not round even. Its behavior is same as built-in `#round`.
|
51
|
+
- `#*truncate`: These methods are alias of `#*rounddown`.
|
52
|
+
|
53
|
+
Result table is shown below, including ruby built-in rounding methods for comparison.
|
54
|
+
An axis of abscissas refers to the receiver and an axis of ordinates refers to the methods.
|
55
|
+
```
|
56
|
+
| 1.9 1.1 -1.1 -1.9
|
57
|
+
-----------------------------------
|
58
|
+
.ceil | 2 2 -1 -1 (ruby built-in)
|
59
|
+
.floor | 1 1 -2 -2 (ruby built-in)
|
60
|
+
.roundup | 2 2 -2 -2
|
61
|
+
.rounddown | 1 1 -1 -1
|
62
|
+
.round | 2 1 -1 -2 (ruby built-in)
|
63
|
+
.truncate | 1 1 -1 -1 (ruby built-in)
|
64
|
+
.mceil(1) | 2 2 -1 -1
|
65
|
+
.mfloor(1) | 1 1 -2 -2
|
66
|
+
.mroundup(1) | 2 2 -2 -2
|
67
|
+
.mrounddown(1)| 1 1 -1 -1
|
68
|
+
.mround(1) | 2 1 -1 -2
|
69
|
+
.mtruncate(1) | 1 1 -1 -1
|
70
|
+
.sceil(1) | 2 2 -1 -1
|
71
|
+
.sfloor(1) | 1 1 -2 -2
|
72
|
+
.sroundup(1) | 2 2 -2 -2
|
73
|
+
.srounddown(1)| 1 1 -1 -1
|
74
|
+
.sround(1) | 2 1 -1 -2
|
75
|
+
.struncate(1) | 1 1 -1 -1
|
76
|
+
```
|
77
|
+
|
78
|
+
Also, try to run `examples/example.rb`
|
79
|
+
|
80
|
+
|
81
|
+
Known Bugs
|
82
|
+
================
|
83
|
+
Float presision
|
84
|
+
----------------
|
85
|
+
```rb
|
86
|
+
1.2.mrounddown(0.1) #=> 1.1
|
87
|
+
```
|
88
|
+
Oops... Resulting 1.2 is expected.
|
89
|
+
|
90
|
+
Becouse,
|
91
|
+
```rb
|
92
|
+
1.2.divmod(0.1) #=> [11, 0.0999999999999999]
|
93
|
+
```
|
94
|
+
|
95
|
+
To avoid this bug, please use `Rational`.
|
96
|
+
```rb
|
97
|
+
1.2r.mrounddown(0.1r) #=> (6/5)
|
98
|
+
```
|
data/examples/example.rb
CHANGED
@@ -1,32 +1,32 @@
|
|
1
|
-
|
2
|
-
require "pretty_round"
|
3
|
-
|
4
|
-
puts "* Rounding to nearerst multiple"
|
5
|
-
xs = %w[2.9 2.5 2.1 -2.1 -2.5 -2.9].map(&:to_r)
|
6
|
-
ns = %w[0.1 0.2 1 2 -0.1 -0.2 -1 -2].map(&:to_r)
|
7
|
-
|
8
|
-
%i[mceil mfloor mroundup mrounddown mround].each do |mthd|
|
9
|
-
puts "##{mthd}"
|
10
|
-
puts " "*6 + "|" + ns.map{|x| x.to_f.to_s.rjust(6)}.join
|
11
|
-
puts "-"*(6+1+6*ns.size)
|
12
|
-
xs.each do |x|
|
13
|
-
puts ("%6.1f"%x) + "|" + ns.map{|n| x.send(mthd, n)}.map{|n| ("%6.1f"%n)}.join
|
14
|
-
end
|
15
|
-
puts
|
16
|
-
end
|
17
|
-
puts
|
18
|
-
|
19
|
-
|
20
|
-
puts "* Rounding with significant digit"
|
21
|
-
xs = [0.12345, 123.45, 12345, -0.12345, -123.45, -12345]
|
22
|
-
ns = [*1..5]
|
23
|
-
|
24
|
-
%i[sceil sfloor sroundup srounddown sround].each do |mthd|
|
25
|
-
puts "##{mthd}"
|
26
|
-
puts " "*13 + "|" + ns.map{|x| x.to_s.center(13)}.join
|
27
|
-
puts "-"*(13+1+13*ns.size)
|
28
|
-
xs.each do |x|
|
29
|
-
puts ("% 13.5f"%x) + "|" + ns.map{|n| x.send(mthd, n)}.map{|n| ("% 13.5f"%n)}.join
|
30
|
-
end
|
31
|
-
puts
|
32
|
-
end
|
1
|
+
|
2
|
+
require "pretty_round"
|
3
|
+
|
4
|
+
puts "* Rounding to nearerst multiple"
|
5
|
+
xs = %w[2.9 2.5 2.1 -2.1 -2.5 -2.9].map(&:to_r)
|
6
|
+
ns = %w[0.1 0.2 1 2 -0.1 -0.2 -1 -2].map(&:to_r)
|
7
|
+
|
8
|
+
%i[mceil mfloor mroundup mrounddown mround].each do |mthd|
|
9
|
+
puts "##{mthd}"
|
10
|
+
puts " "*6 + "|" + ns.map{|x| x.to_f.to_s.rjust(6)}.join
|
11
|
+
puts "-"*(6+1+6*ns.size)
|
12
|
+
xs.each do |x|
|
13
|
+
puts ("%6.1f"%x) + "|" + ns.map{|n| x.send(mthd, n)}.map{|n| ("%6.1f"%n)}.join
|
14
|
+
end
|
15
|
+
puts
|
16
|
+
end
|
17
|
+
puts
|
18
|
+
|
19
|
+
|
20
|
+
puts "* Rounding with significant digit"
|
21
|
+
xs = [0.12345, 123.45, 12345, -0.12345, -123.45, -12345]
|
22
|
+
ns = [*1..5]
|
23
|
+
|
24
|
+
%i[sceil sfloor sroundup srounddown sround].each do |mthd|
|
25
|
+
puts "##{mthd}"
|
26
|
+
puts " "*13 + "|" + ns.map{|x| x.to_s.center(13)}.join
|
27
|
+
puts "-"*(13+1+13*ns.size)
|
28
|
+
xs.each do |x|
|
29
|
+
puts ("% 13.5f"%x) + "|" + ns.map{|n| x.send(mthd, n)}.map{|n| ("% 13.5f"%n)}.join
|
30
|
+
end
|
31
|
+
puts
|
32
|
+
end
|
data/examples/example2.rb
CHANGED
@@ -1,19 +1,19 @@
|
|
1
|
-
|
2
|
-
require "pretty_round"
|
3
|
-
|
4
|
-
xs = [1.9, 1.1, -1.1, -1.9]
|
5
|
-
|
6
|
-
puts " "*14 + "|" + xs.map{|x| x.to_s.rjust(5)}.join
|
7
|
-
puts "-"*(14+1+xs.size*5)
|
8
|
-
|
9
|
-
%i[ceil floor roundup rounddown round truncate].each do |mthd|
|
10
|
-
puts ".#{mthd}".ljust(14)+ "|" + xs.map{|x| x.send(mthd)}.map{|x| x.to_i.to_s.rjust(5)}.join
|
11
|
-
end
|
12
|
-
|
13
|
-
%i[mceil mfloor mroundup mrounddown mround mtruncate].each do |mthd|
|
14
|
-
puts ".#{mthd}(1)".ljust(14)+ "|" + xs.map{|x| x.send(mthd,1)}.map{|x| x.to_i.to_s.rjust(5)}.join
|
15
|
-
end
|
16
|
-
|
17
|
-
%i[sceil sfloor sroundup srounddown sround struncate].each do |mthd|
|
18
|
-
puts ".#{mthd}(1)".ljust(14)+ "|" + xs.map{|x| x.send(mthd,1)}.map{|x| x.to_i.to_s.rjust(5)}.join
|
19
|
-
end
|
1
|
+
|
2
|
+
require "pretty_round"
|
3
|
+
|
4
|
+
xs = [1.9, 1.1, -1.1, -1.9]
|
5
|
+
|
6
|
+
puts " "*14 + "|" + xs.map{|x| x.to_s.rjust(5)}.join
|
7
|
+
puts "-"*(14+1+xs.size*5)
|
8
|
+
|
9
|
+
%i[ceil floor roundup rounddown round truncate].each do |mthd|
|
10
|
+
puts ".#{mthd}".ljust(14)+ "|" + xs.map{|x| x.send(mthd)}.map{|x| x.to_i.to_s.rjust(5)}.join
|
11
|
+
end
|
12
|
+
|
13
|
+
%i[mceil mfloor mroundup mrounddown mround mtruncate].each do |mthd|
|
14
|
+
puts ".#{mthd}(1)".ljust(14)+ "|" + xs.map{|x| x.send(mthd,1)}.map{|x| x.to_i.to_s.rjust(5)}.join
|
15
|
+
end
|
16
|
+
|
17
|
+
%i[sceil sfloor sroundup srounddown sround struncate].each do |mthd|
|
18
|
+
puts ".#{mthd}(1)".ljust(14)+ "|" + xs.map{|x| x.send(mthd,1)}.map{|x| x.to_i.to_s.rjust(5)}.join
|
19
|
+
end
|
@@ -0,0 +1,113 @@
|
|
1
|
+
|
2
|
+
module PrettyRound
|
3
|
+
# Rounding up with given precision.
|
4
|
+
# This method round up to far from 0 direction.
|
5
|
+
def roundup(digit=0)
|
6
|
+
abs.ceil(digit) * (positive? ? 1 : -1)
|
7
|
+
end
|
8
|
+
|
9
|
+
# Rounding down with given precision.
|
10
|
+
# This method round down to near to 0 direction.
|
11
|
+
def rounddown(digit=0)
|
12
|
+
abs.floor(digit) * (positive? ? 1 : -1)
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
# Return nearest multiple of given number that is equal to or greater than self.
|
17
|
+
# This method round up to the positive infinity direction.
|
18
|
+
def mceil(num)
|
19
|
+
if (x = num * div(num)) == self
|
20
|
+
self
|
21
|
+
else
|
22
|
+
[x, x+num].max
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# Return nearest multiple of given number that is equal to or less than self.
|
27
|
+
# This method round down to the negative infinity direction.
|
28
|
+
def mfloor(num)
|
29
|
+
if (x = num * div(num)) == self
|
30
|
+
self
|
31
|
+
else
|
32
|
+
[x, x+num].min
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# Return nearest multiple of given number that the absolute is equal to or greater than self.
|
37
|
+
# This method round up to far from 0 direction.
|
38
|
+
def mroundup(num)
|
39
|
+
if (x = num * div(num)) == self
|
40
|
+
self
|
41
|
+
else
|
42
|
+
[x, x+num].max_by(&:abs)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# Return nearest multiple of given number that the absolute is equal to or less than self.
|
47
|
+
# This method round down to near to 0 direction.
|
48
|
+
def mrounddown(num)
|
49
|
+
if (x = num * div(num)) == self
|
50
|
+
self
|
51
|
+
else
|
52
|
+
[x, x+num].min_by(&:abs)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
# Retuen nearest multiple of given number.
|
57
|
+
# When self is median of multiple of given number, return the multiple that have greater absolute.
|
58
|
+
def mround(num)
|
59
|
+
if (x = num * div(num)) == self
|
60
|
+
self
|
61
|
+
elsif x + x+num == self + self # if self is median
|
62
|
+
[x, x+num].max_by(&:abs)
|
63
|
+
else
|
64
|
+
[x, x+num].min_by{|t| (t - self).abs}
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
alias_method :mtruncate, :mrounddown
|
69
|
+
|
70
|
+
|
71
|
+
# Ceiling with given significant digit.
|
72
|
+
def sceil(digit)
|
73
|
+
return self if zero?
|
74
|
+
selfdigit = Math.log10(abs).floor + 1
|
75
|
+
ceil(digit - selfdigit)
|
76
|
+
end
|
77
|
+
|
78
|
+
# Flooring with given significant digit.
|
79
|
+
def sfloor(digit)
|
80
|
+
return self if zero?
|
81
|
+
selfdigit = Math.log10(abs).floor + 1
|
82
|
+
floor(digit - selfdigit)
|
83
|
+
end
|
84
|
+
|
85
|
+
# Rounding up with given significant digit.
|
86
|
+
def sroundup(digit)
|
87
|
+
return self if zero?
|
88
|
+
selfdigit = Math.log10(abs).floor + 1
|
89
|
+
abs.ceil(digit - selfdigit) * (positive? ? 1 : -1)
|
90
|
+
end
|
91
|
+
|
92
|
+
# Rounding down with given significant digit.
|
93
|
+
def srounddown(digit)
|
94
|
+
return self if zero?
|
95
|
+
selfdigit = Math.log10(abs).floor + 1
|
96
|
+
abs.floor(digit - selfdigit) * (positive? ? 1 : -1)
|
97
|
+
end
|
98
|
+
|
99
|
+
# Rounding off with given significant digit.
|
100
|
+
def sround(digit)
|
101
|
+
return self if zero?
|
102
|
+
selfdigit = Math.log10(abs).floor + 1
|
103
|
+
round(digit - selfdigit)
|
104
|
+
end
|
105
|
+
|
106
|
+
alias_method :struncate, :srounddown
|
107
|
+
end
|
108
|
+
|
109
|
+
module PrettyRound
|
110
|
+
refine Numeric do
|
111
|
+
include(PrettyRound)
|
112
|
+
end
|
113
|
+
end
|
data/lib/pretty_round.rb
CHANGED
@@ -1,112 +1,3 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
# This method round up to far from 0 direction.
|
5
|
-
def roundup(digit=0)
|
6
|
-
x = 10**(-digit)
|
7
|
-
if self > 0
|
8
|
-
quo(x).ceil * x
|
9
|
-
else
|
10
|
-
quo(x).floor * x
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
# Rounding down with given precision.
|
15
|
-
# This method round down to near to 0 direction.
|
16
|
-
def rounddown(digit=0)
|
17
|
-
x = 10**(-digit)
|
18
|
-
if self > 0
|
19
|
-
quo(x).floor * x
|
20
|
-
else
|
21
|
-
quo(x).ceil * x
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
|
26
|
-
# Return nearest multiple of given number that is equal to or greater than self.
|
27
|
-
# This method round up to the positive infinity direction.
|
28
|
-
def mceil(num)
|
29
|
-
if (x = num * div(num)) == self
|
30
|
-
self
|
31
|
-
else
|
32
|
-
[x, x+num].max
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
# Return nearest multiple of given number that is equal to or less than self.
|
37
|
-
# This method round down to the negative infinity direction.
|
38
|
-
def mfloor(num)
|
39
|
-
if (x = num * div(num)) == self
|
40
|
-
self
|
41
|
-
else
|
42
|
-
[x, x+num].min
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
# Return nearest multiple of given number that the absolute is equal to or greater than self.
|
47
|
-
# This method round up to far from 0 direction.
|
48
|
-
def mroundup(num)
|
49
|
-
if (x = num * div(num)) == self
|
50
|
-
self
|
51
|
-
else
|
52
|
-
[x, x+num].max_by(&:abs)
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
# Return nearest multiple of given number that the absolute is equal to or less than self.
|
57
|
-
# This method round down to near to 0 direction.
|
58
|
-
def mrounddown(num)
|
59
|
-
if (x = num * div(num)) == self
|
60
|
-
self
|
61
|
-
else
|
62
|
-
[x, x+num].min_by(&:abs)
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
# Retuen nearest multiple of given number.
|
67
|
-
# When self is median of multiple of given number, return the multiple that have greater absolute.
|
68
|
-
def mround(num)
|
69
|
-
if (x = num * div(num)) == self
|
70
|
-
self
|
71
|
-
elsif x + x +num == self + self # if self is median
|
72
|
-
[x, x+num].max_by(&:abs)
|
73
|
-
else
|
74
|
-
[x, x+num].min_by{|t| (t - self).abs}
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
alias :mtruncate :mrounddown
|
79
|
-
|
80
|
-
|
81
|
-
# Ceiling with given significant digit.
|
82
|
-
def sceil(digit)
|
83
|
-
selfdigit = Math.log10(abs).floor + 1
|
84
|
-
mceil(10**(selfdigit - digit))
|
85
|
-
end
|
86
|
-
|
87
|
-
# Flooring with given significant digit.
|
88
|
-
def sfloor(digit)
|
89
|
-
selfdigit = Math.log10(abs).floor + 1
|
90
|
-
mfloor(10**(selfdigit - digit))
|
91
|
-
end
|
92
|
-
|
93
|
-
# Rounding up with given significant digit.
|
94
|
-
def sroundup(digit)
|
95
|
-
selfdigit = Math.log10(abs).floor + 1
|
96
|
-
mroundup(10**(selfdigit - digit))
|
97
|
-
end
|
98
|
-
|
99
|
-
# Rounding down with given significant digit.
|
100
|
-
def srounddown(digit)
|
101
|
-
selfdigit = Math.log10(abs).floor + 1
|
102
|
-
mrounddown(10**(selfdigit - digit))
|
103
|
-
end
|
104
|
-
|
105
|
-
# Rounding off with given significant digit.
|
106
|
-
def sround(digit)
|
107
|
-
selfdigit = Math.log10(abs).floor + 1
|
108
|
-
mround(10**(selfdigit - digit))
|
109
|
-
end
|
110
|
-
|
111
|
-
alias :struncate :srounddown
|
112
|
-
end
|
1
|
+
|
2
|
+
require_relative './pretty_round/core'
|
3
|
+
Numeric.include(PrettyRound)
|
data/test/test_pretty_round.rb
CHANGED
@@ -1,251 +1,273 @@
|
|
1
|
-
require 'minitest'
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
assert_ep 2, 1.
|
15
|
-
assert_ep
|
16
|
-
assert_ep
|
17
|
-
assert_ep -2, -1.
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
assert_ep
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
assert_ep -
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
assert_ep 1, 1.
|
34
|
-
assert_ep
|
35
|
-
assert_ep
|
36
|
-
assert_ep -1, -1.
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
assert_ep
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
assert_ep -
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
assert_ep 2, 1.
|
54
|
-
assert_ep
|
55
|
-
assert_ep
|
56
|
-
assert_ep -1, -1.
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
assert_ep
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
assert_ep -
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
assert_ep 1, 1.
|
73
|
-
assert_ep
|
74
|
-
assert_ep
|
75
|
-
assert_ep -2, -1.
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
assert_ep
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
assert_ep -
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
assert_ep 2, 1.
|
92
|
-
assert_ep
|
93
|
-
assert_ep
|
94
|
-
assert_ep -2, -1.
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
assert_ep
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
assert_ep -
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
assert_ep 1, 1.
|
111
|
-
assert_ep
|
112
|
-
assert_ep
|
113
|
-
assert_ep -1, -1.
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
assert_ep
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
assert_ep -
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
assert_ep
|
130
|
-
assert_ep
|
131
|
-
assert_ep
|
132
|
-
assert_ep -
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
assert_ep
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
assert_ep -
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
assert_ep 1, 1.
|
149
|
-
assert_ep
|
150
|
-
assert_ep
|
151
|
-
assert_ep -1, -1.
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
assert_ep
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
assert_ep -
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
assert_ep
|
170
|
-
assert_ep
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
assert_ep -
|
176
|
-
assert_ep -123
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
assert_ep
|
184
|
-
assert_ep 123
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
assert_ep -
|
190
|
-
assert_ep -
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
assert_ep
|
198
|
-
assert_ep
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
assert_ep -
|
204
|
-
assert_ep -
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
assert_ep
|
212
|
-
assert_ep 123
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
assert_ep -
|
218
|
-
assert_ep -123
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
assert_ep
|
229
|
-
assert_ep 123
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
assert_ep -
|
235
|
-
assert_ep -123
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
assert_ep
|
243
|
-
assert_ep 123
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
assert_ep -
|
249
|
-
assert_ep -123
|
250
|
-
|
251
|
-
|
1
|
+
require 'minitest'
|
2
|
+
# require_relative '../lib/pretty_round'
|
3
|
+
require_relative '../lib/pretty_round/core'
|
4
|
+
using PrettyRound
|
5
|
+
|
6
|
+
Minitest.autorun
|
7
|
+
|
8
|
+
class TEST_PrettyRound < Minitest::Test
|
9
|
+
def assert_ep(expect, target)
|
10
|
+
assert_in_epsilon(expect, target, Float::EPSILON)
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_roundup
|
14
|
+
assert_ep 2, 1.9.roundup
|
15
|
+
assert_ep 2, 1.5.roundup
|
16
|
+
assert_ep 2, 1.1.roundup
|
17
|
+
assert_ep -2, -1.1.roundup
|
18
|
+
assert_ep -2, -1.5.roundup
|
19
|
+
assert_ep -2, -1.9.roundup
|
20
|
+
|
21
|
+
x = 123.456
|
22
|
+
assert_ep 124, x.roundup
|
23
|
+
assert_ep 123.46, x.roundup(2)
|
24
|
+
assert_ep 200, x.roundup(-2)
|
25
|
+
|
26
|
+
x = -123.456
|
27
|
+
assert_ep -124, x.roundup
|
28
|
+
assert_ep -123.46, x.roundup(2)
|
29
|
+
assert_ep -200, x.roundup(-2)
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_rounddown
|
33
|
+
assert_ep 1, 1.9.rounddown
|
34
|
+
assert_ep 1, 1.5.rounddown
|
35
|
+
assert_ep 1, 1.1.rounddown
|
36
|
+
assert_ep -1, -1.1.rounddown
|
37
|
+
assert_ep -1, -1.5.rounddown
|
38
|
+
assert_ep -1, -1.9.rounddown
|
39
|
+
|
40
|
+
x = 123.456
|
41
|
+
assert_ep 123, x.rounddown
|
42
|
+
assert_ep 123.45, x.rounddown(2)
|
43
|
+
assert_ep 100, x.rounddown(-2)
|
44
|
+
|
45
|
+
x = -123.456
|
46
|
+
assert_ep -123, x.rounddown
|
47
|
+
assert_ep -123.45, x.rounddown(2)
|
48
|
+
assert_ep -100, x.rounddown(-2)
|
49
|
+
end
|
50
|
+
|
51
|
+
|
52
|
+
def test_mceil
|
53
|
+
assert_ep 2, 1.9.mceil(1)
|
54
|
+
assert_ep 2, 1.5.mceil(1)
|
55
|
+
assert_ep 2, 1.1.mceil(1)
|
56
|
+
assert_ep -1, -1.1.mceil(1)
|
57
|
+
assert_ep -1, -1.5.mceil(1)
|
58
|
+
assert_ep -1, -1.9.mceil(1)
|
59
|
+
|
60
|
+
x = 123.456
|
61
|
+
assert_ep 124, x.mceil(-2)
|
62
|
+
assert_ep 123.46, x.mceil(-0.01)
|
63
|
+
assert_ep 125, x.mceil(25)
|
64
|
+
|
65
|
+
x = -123.456
|
66
|
+
assert_ep -122, x.mceil(-2)
|
67
|
+
assert_ep -123.45, x.mceil(-0.01)
|
68
|
+
assert_ep -100, x.mceil(25)
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_mfloor
|
72
|
+
assert_ep 1, 1.9.mfloor(1)
|
73
|
+
assert_ep 1, 1.5.mfloor(1)
|
74
|
+
assert_ep 1, 1.1.mfloor(1)
|
75
|
+
assert_ep -2, -1.1.mfloor(1)
|
76
|
+
assert_ep -2, -1.5.mfloor(1)
|
77
|
+
assert_ep -2, -1.9.mfloor(1)
|
78
|
+
|
79
|
+
x = 123.456
|
80
|
+
assert_ep 122, x.mfloor(-2)
|
81
|
+
assert_ep 123.45, x.mfloor(-0.01)
|
82
|
+
assert_ep 100, x.mfloor(25)
|
83
|
+
|
84
|
+
x = -123.456
|
85
|
+
assert_ep -124, x.mfloor(-2)
|
86
|
+
assert_ep -123.46, x.mfloor(-0.01)
|
87
|
+
assert_ep -125, x.mfloor(25)
|
88
|
+
end
|
89
|
+
|
90
|
+
def test_mroundup
|
91
|
+
assert_ep 2, 1.9.mroundup(1)
|
92
|
+
assert_ep 2, 1.5.mroundup(1)
|
93
|
+
assert_ep 2, 1.1.mroundup(1)
|
94
|
+
assert_ep -2, -1.1.mroundup(1)
|
95
|
+
assert_ep -2, -1.5.mroundup(1)
|
96
|
+
assert_ep -2, -1.9.mroundup(1)
|
97
|
+
|
98
|
+
x = 123.456
|
99
|
+
assert_ep 124, x.mroundup(-2)
|
100
|
+
assert_ep 123.46, x.mroundup(-0.01)
|
101
|
+
assert_ep 125, x.mroundup(25)
|
102
|
+
|
103
|
+
x = -123.456
|
104
|
+
assert_ep -124, x.mroundup(-2)
|
105
|
+
assert_ep -123.46, x.mroundup(-0.01)
|
106
|
+
assert_ep -125, x.mroundup(25)
|
107
|
+
end
|
108
|
+
|
109
|
+
def test_mrounddown
|
110
|
+
assert_ep 1, 1.9.mrounddown(1)
|
111
|
+
assert_ep 1, 1.5.mrounddown(1)
|
112
|
+
assert_ep 1, 1.1.mrounddown(1)
|
113
|
+
assert_ep -1, -1.1.mrounddown(1)
|
114
|
+
assert_ep -1, -1.5.mrounddown(1)
|
115
|
+
assert_ep -1, -1.9.mrounddown(1)
|
116
|
+
|
117
|
+
x = 123.456
|
118
|
+
assert_ep 122, x.mrounddown(-2)
|
119
|
+
assert_ep 123.45, x.mrounddown(-0.01)
|
120
|
+
assert_ep 100, x.mrounddown(25)
|
121
|
+
|
122
|
+
x = -123.456
|
123
|
+
assert_ep -122, x.mrounddown(-2)
|
124
|
+
assert_ep -123.45, x.mrounddown(-0.01)
|
125
|
+
assert_ep -100, x.mrounddown(25)
|
126
|
+
end
|
127
|
+
|
128
|
+
def test_mround
|
129
|
+
assert_ep 2, 1.9.mround(1)
|
130
|
+
assert_ep 2, 1.5.mround(1)
|
131
|
+
assert_ep 1, 1.1.mround(1)
|
132
|
+
assert_ep -1, -1.1.mround(1)
|
133
|
+
assert_ep -2, -1.5.mround(1)
|
134
|
+
assert_ep -2, -1.9.mround(1)
|
135
|
+
|
136
|
+
x = 123.456
|
137
|
+
assert_ep 124, x.mround(-2)
|
138
|
+
assert_ep 123.46, x.mround(-0.01)
|
139
|
+
assert_ep 125, x.mround(25)
|
140
|
+
|
141
|
+
x = -123.456
|
142
|
+
assert_ep -124, x.mround(-2)
|
143
|
+
assert_ep -123.46, x.mround(-0.01)
|
144
|
+
assert_ep -125, x.mround(25)
|
145
|
+
end
|
146
|
+
|
147
|
+
def test_mtruncate
|
148
|
+
assert_ep 1, 1.9.mtruncate(1)
|
149
|
+
assert_ep 1, 1.5.mtruncate(1)
|
150
|
+
assert_ep 1, 1.1.mtruncate(1)
|
151
|
+
assert_ep -1, -1.1.mtruncate(1)
|
152
|
+
assert_ep -1, -1.5.mtruncate(1)
|
153
|
+
assert_ep -1, -1.9.mtruncate(1)
|
154
|
+
|
155
|
+
x = 123.456
|
156
|
+
assert_ep 122, x.mtruncate(-2)
|
157
|
+
assert_ep 123.45, x.mtruncate(-0.01)
|
158
|
+
assert_ep 100, x.mtruncate(25)
|
159
|
+
|
160
|
+
x = -123.456
|
161
|
+
assert_ep -122, x.mtruncate(-2)
|
162
|
+
assert_ep -123.45, x.mtruncate(-0.01)
|
163
|
+
assert_ep -100, x.mtruncate(25)
|
164
|
+
end
|
165
|
+
|
166
|
+
|
167
|
+
def test_sceil
|
168
|
+
x = 123.456
|
169
|
+
assert_ep 200, x.sceil(1)
|
170
|
+
assert_ep 124, x.sceil(3)
|
171
|
+
assert_ep 123.5, x.sceil(4)
|
172
|
+
assert_ep 123.456, x.sceil(6)
|
173
|
+
|
174
|
+
x = -123.456
|
175
|
+
assert_ep -100, x.sceil(1)
|
176
|
+
assert_ep -123, x.sceil(3)
|
177
|
+
assert_ep -123.4, x.sceil(4)
|
178
|
+
assert_ep -123.456, x.sceil(6)
|
179
|
+
end
|
180
|
+
|
181
|
+
def test_sfloor
|
182
|
+
x = 123.456
|
183
|
+
assert_ep 100, x.sfloor(1)
|
184
|
+
assert_ep 123, x.sfloor(3)
|
185
|
+
assert_ep 123.4, x.sfloor(4)
|
186
|
+
assert_ep 123.456, x.sfloor(6)
|
187
|
+
|
188
|
+
x = -123.456
|
189
|
+
assert_ep -200, x.sfloor(1)
|
190
|
+
assert_ep -124, x.sfloor(3)
|
191
|
+
assert_ep -123.5, x.sfloor(4)
|
192
|
+
assert_ep -123.456, x.sfloor(6)
|
193
|
+
end
|
194
|
+
|
195
|
+
def test_sroundup
|
196
|
+
x = 123.456
|
197
|
+
assert_ep 200, x.sroundup(1)
|
198
|
+
assert_ep 124, x.sroundup(3)
|
199
|
+
assert_ep 123.5, x.sroundup(4)
|
200
|
+
assert_ep 123.456, x.sroundup(6)
|
201
|
+
|
202
|
+
x = -123.456
|
203
|
+
assert_ep -200, x.sroundup(1)
|
204
|
+
assert_ep -124, x.sroundup(3)
|
205
|
+
assert_ep -123.5, x.sroundup(4)
|
206
|
+
assert_ep -123.456, x.sroundup(6)
|
207
|
+
end
|
208
|
+
|
209
|
+
def test_srounddown
|
210
|
+
x = 123.456
|
211
|
+
assert_ep 100, x.srounddown(1)
|
212
|
+
assert_ep 123, x.srounddown(3)
|
213
|
+
assert_ep 123.4, x.srounddown(4)
|
214
|
+
assert_ep 123.456, x.srounddown(6)
|
215
|
+
|
216
|
+
x = -123.456
|
217
|
+
assert_ep -100, x.srounddown(1)
|
218
|
+
assert_ep -123, x.srounddown(3)
|
219
|
+
assert_ep -123.4, x.srounddown(4)
|
220
|
+
assert_ep -123.456, x.srounddown(6)
|
221
|
+
end
|
222
|
+
|
223
|
+
def test_sround
|
224
|
+
assert_ep 2, 1.5.sround(1)
|
225
|
+
assert_ep -2, -1.5.sround(1)
|
226
|
+
|
227
|
+
x = 123.456
|
228
|
+
assert_ep 100, x.sround(1)
|
229
|
+
assert_ep 123, x.sround(3)
|
230
|
+
assert_ep 123.5, x.sround(4)
|
231
|
+
assert_ep 123.456, x.sround(6)
|
232
|
+
|
233
|
+
x = -123.456
|
234
|
+
assert_ep -100, x.sround(1)
|
235
|
+
assert_ep -123, x.sround(3)
|
236
|
+
assert_ep -123.5, x.sround(4)
|
237
|
+
assert_ep -123.456, x.sround(6)
|
238
|
+
end
|
239
|
+
|
240
|
+
def test_struncate
|
241
|
+
x = 123.456
|
242
|
+
assert_ep 100, x.struncate(1)
|
243
|
+
assert_ep 123, x.struncate(3)
|
244
|
+
assert_ep 123.4, x.struncate(4)
|
245
|
+
assert_ep 123.456, x.struncate(6)
|
246
|
+
|
247
|
+
x = -123.456
|
248
|
+
assert_ep -100, x.struncate(1)
|
249
|
+
assert_ep -123, x.struncate(3)
|
250
|
+
assert_ep -123.4, x.struncate(4)
|
251
|
+
assert_ep -123.456, x.struncate(6)
|
252
|
+
end
|
253
|
+
|
254
|
+
def test_zero
|
255
|
+
x = 0
|
256
|
+
assert_ep x, x.roundup
|
257
|
+
assert_ep x, x.rounddown
|
258
|
+
assert_ep x, x.mceil(1)
|
259
|
+
assert_ep x, x.mfloor(1)
|
260
|
+
assert_ep x, x.mroundup(1)
|
261
|
+
assert_ep x, x.mrounddown(1)
|
262
|
+
assert_ep x, x.mround(1)
|
263
|
+
assert_ep x, x.mround(1)
|
264
|
+
assert_ep x, x.mtruncate(1)
|
265
|
+
assert_ep x, x.sceil(1)
|
266
|
+
assert_ep x, x.sfloor(1)
|
267
|
+
assert_ep x, x.sroundup(1)
|
268
|
+
assert_ep x, x.srounddown(1)
|
269
|
+
assert_ep x, x.sround(1)
|
270
|
+
assert_ep x, x.sround(1)
|
271
|
+
assert_ep x, x.struncate(1)
|
272
|
+
end
|
273
|
+
end
|
metadata
CHANGED
@@ -1,16 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pretty_round
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- diaphragm
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-01-10 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description: This gem provide useful numerical rounding methods
|
13
|
+
description: This gem provide useful numerical rounding methods such as nearest multiple
|
14
|
+
or significant digits.
|
14
15
|
email:
|
15
16
|
executables: []
|
16
17
|
extensions: []
|
@@ -21,6 +22,7 @@ files:
|
|
21
22
|
- examples/example.rb
|
22
23
|
- examples/example2.rb
|
23
24
|
- lib/pretty_round.rb
|
25
|
+
- lib/pretty_round/core.rb
|
24
26
|
- test/test_pretty_round.rb
|
25
27
|
homepage: https://github.com/diaphragm/ruby-pretty-round
|
26
28
|
licenses:
|
@@ -34,7 +36,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
34
36
|
requirements:
|
35
37
|
- - ">="
|
36
38
|
- !ruby/object:Gem::Version
|
37
|
-
version: '
|
39
|
+
version: '2.3'
|
38
40
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
39
41
|
requirements:
|
40
42
|
- - ">="
|
@@ -42,7 +44,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
42
44
|
version: '0'
|
43
45
|
requirements: []
|
44
46
|
rubyforge_project:
|
45
|
-
rubygems_version: 2.
|
47
|
+
rubygems_version: 2.7.8
|
46
48
|
signing_key:
|
47
49
|
specification_version: 4
|
48
50
|
summary: pretty rounding methods library
|