Last active

Embed URL

HTTPS clone URL

SSH clone URL

You can clone with HTTPS or SSH.

Download Gist

Test rounding behavior of BigDecimal

View bd_test.rb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
require 'bigdecimal'
 
def to_decimal(digits, dp)
digits = digits.dup
if dp < -digits.length
digits.unshift(*([nil]*(-digits.length-dp)))
end
digits.insert(dp+digits.length, '.').map { |x| x || '0' }.join
end
 
def division_result(n1, n2, offset)
x1 = BigDecimal.new(to_decimal(n1, offset))
x2 = BigDecimal.new(to_decimal(n2, offset-2))
result = x1 / x2
precs = [x1.precs, x2.precs, result.precs].flatten
precs.map { |x| "%02d" % x }.join('/') + ' ' + result.to_s("F")
end
 
NITER = 80
 
N1 = %w(1 4 7 2)
N2 = %w(9 9)
 
NITER.times do |idx|
leader = idx == NITER/2 ? '**' : ' '
puts leader+division_result(N1,N2, idx - NITER/2)
end
View bd_test.rb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 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
09/54/09/54/54/63 1486.868686868686868686868686868686868686868686869
18/54/09/54/45/63 1486.868686868686868686868686868686868687
18/54/09/54/45/63 1486.868686868686868686868686868686868687
18/54/09/54/45/63 1486.868686868686868686868686868686868687
09/45/09/54/45/63 1486.868686868686868686868686868686868687
09/45/18/54/54/63 1486.868686868686868686868686868686868686868686869
09/45/09/45/45/54 1486.868686868686868686868686868686868687
09/45/09/45/45/54 1486.868686868686868686868686868686868687
09/45/09/45/45/54 1486.868686868686868686868686868686868687
09/45/09/45/45/54 1486.868686868686868686868686868686868687
18/45/09/45/36/54 1486.868686868686868686868686869
18/45/09/45/36/54 1486.868686868686868686868686869
18/45/09/45/36/54 1486.868686868686868686868686869
09/36/09/45/36/54 1486.868686868686868686868686869
09/36/18/45/45/54 1486.868686868686868686868686868686868687
09/36/09/36/36/45 1486.868686868686868686868686869
09/36/09/36/36/45 1486.868686868686868686868686869
09/36/09/36/36/45 1486.868686868686868686868686869
09/36/09/36/36/45 1486.868686868686868686868686869
18/36/09/36/27/45 1486.868686868686868687
18/36/09/36/27/45 1486.868686868686868687
18/36/09/36/27/45 1486.868686868686868687
09/27/09/36/27/45 1486.868686868686868687
09/27/18/36/36/45 1486.868686868686868686868686869
09/27/09/27/27/36 1486.868686868686868687
09/27/09/27/27/36 1486.868686868686868687
09/27/09/27/27/36 1486.868686868686868687
09/27/09/27/27/36 1486.868686868686868687
18/27/09/27/18/36 1486.868686869
18/27/09/27/18/36 1486.868686869
18/27/09/27/18/36 1486.868686869
09/18/09/27/18/36 1486.868686869
09/18/18/27/27/36 1486.868686868686868687
09/18/09/18/18/27 1486.868686869
09/18/09/18/18/27 1486.868686869
09/18/09/18/18/27 1486.868686869
09/18/09/18/18/27 1486.868686869
18/18/09/18/27/45 1486.868686868686868687
18/18/09/18/27/45 1486.868686868686868687
18/18/09/18/27/45 1486.868686868686868687
**09/18/09/18/18/36 1486.868686869
09/18/18/18/36/45 1486.868686868686868686868686869
09/18/09/18/27/36 1486.868686868686868687
09/18/09/18/27/36 1486.868686868686868687
09/18/09/18/27/36 1486.868686868686868687
09/18/09/18/27/36 1486.868686868686868687
18/27/09/18/36/54 1486.868686868686868686868686869
18/27/09/18/36/54 1486.868686868686868686868686869
18/27/09/18/36/54 1486.868686868686868686868686869
09/27/09/18/27/45 1486.868686868686868687
09/27/18/27/45/54 1486.868686868686868686868686868686868687
09/27/09/27/36/45 1486.868686868686868686868686869
09/27/09/27/36/45 1486.868686868686868686868686869
09/27/09/27/36/45 1486.868686868686868686868686869
09/27/09/27/36/45 1486.868686868686868686868686869
18/36/09/27/45/63 1486.868686868686868686868686868686868687
18/36/09/27/45/63 1486.868686868686868686868686868686868687
18/36/09/27/45/63 1486.868686868686868686868686868686868687
09/36/09/27/36/54 1486.868686868686868686868686869
09/36/18/36/54/63 1486.868686868686868686868686868686868686868686869
09/36/09/36/45/54 1486.868686868686868686868686868686868687
09/36/09/36/45/54 1486.868686868686868686868686868686868687
09/36/09/36/45/54 1486.868686868686868686868686868686868687
09/36/09/36/45/54 1486.868686868686868686868686868686868687
18/45/09/36/54/72 1486.868686868686868686868686868686868686868686869
18/45/09/36/54/72 1486.868686868686868686868686868686868686868686869
18/45/09/36/54/72 1486.868686868686868686868686868686868686868686869
09/45/09/36/45/63 1486.868686868686868686868686868686868687
09/45/18/45/63/72 1486.868686868686868686868686868686868686868686868686868687
09/45/09/45/54/63 1486.868686868686868686868686868686868686868686869
09/45/09/45/54/63 1486.868686868686868686868686868686868686868686869
09/45/09/45/54/63 1486.868686868686868686868686868686868686868686869
09/45/09/45/54/63 1486.868686868686868686868686868686868686868686869
18/54/09/45/63/81 1486.868686868686868686868686868686868686868686868686868687
18/54/09/45/63/81 1486.868686868686868686868686868686868686868686868686868687
18/54/09/45/63/81 1486.868686868686868686868686868686868686868686868686868687
09/54/09/45/54/72 1486.868686868686868686868686868686868686868686869
09/54/18/54/72/81 1486.868686868686868686868686868686868686868686868686868686868686869
09/54/09/54/63/72 1486.868686868686868686868686868686868686868686868686868687
09/54/09/54/63/72 1486.868686868686868686868686868686868686868686868686868687
View bd_test.rb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 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
09/54/09/54/45/54 1486.868686868686868686868686868686868687
18/54/09/54/36/54 1486.868686868686868686868686869
18/54/09/54/36/54 1486.868686868686868686868686869
18/54/09/54/36/54 1486.868686868686868686868686869
09/45/09/54/36/54 1486.868686868686868686868686869
09/45/18/54/45/54 1486.868686868686868686868686868686868687
09/45/09/45/36/45 1486.868686868686868686868686869
09/45/09/45/36/45 1486.868686868686868686868686869
09/45/09/45/36/45 1486.868686868686868686868686869
09/45/09/45/36/45 1486.868686868686868686868686869
18/45/09/45/27/45 1486.868686868686868687
18/45/09/45/27/45 1486.868686868686868687
18/45/09/45/27/45 1486.868686868686868687
09/36/09/45/27/45 1486.868686868686868687
09/36/18/45/36/45 1486.868686868686868686868686869
09/36/09/36/27/36 1486.868686868686868687
09/36/09/36/27/36 1486.868686868686868687
09/36/09/36/27/36 1486.868686868686868687
09/36/09/36/27/36 1486.868686868686868687
18/36/09/36/18/36 1486.868686869
18/36/09/36/18/36 1486.868686869
18/36/09/36/18/36 1486.868686869
09/27/09/36/18/36 1486.868686869
09/27/18/36/27/36 1486.868686868686868687
09/27/09/27/18/27 1486.868686869
09/27/09/27/18/27 1486.868686869
09/27/09/27/18/27 1486.868686869
09/27/09/27/18/27 1486.868686869
18/27/09/27/09/27 1487.0
18/27/09/27/09/27 1487.0
18/27/09/27/09/27 1487.0
09/18/09/27/09/27 1487.0
09/18/18/27/18/27 1486.868686869
09/18/09/18/09/18 1487.0
09/18/09/18/09/18 1487.0
09/18/09/18/09/18 1487.0
09/18/09/18/09/18 1487.0
18/18/09/18/18/36 1486.868686869
18/18/09/18/18/36 1486.868686869
18/18/09/18/18/36 1486.868686869
**09/18/09/18/09/27 1487.0
09/18/18/18/27/36 1486.868686868686868687
09/18/09/18/18/27 1486.868686869
09/18/09/18/18/27 1486.868686869
09/18/09/18/18/27 1486.868686869
09/18/09/18/18/27 1486.868686869
18/27/09/18/27/45 1486.868686868686868687
18/27/09/18/27/45 1486.868686868686868687
18/27/09/18/27/45 1486.868686868686868687
09/27/09/18/18/36 1486.868686869
09/27/18/27/36/45 1486.868686868686868686868686869
09/27/09/27/27/36 1486.868686868686868687
09/27/09/27/27/36 1486.868686868686868687
09/27/09/27/27/36 1486.868686868686868687
09/27/09/27/27/36 1486.868686868686868687
18/36/09/27/36/54 1486.868686868686868686868686869
18/36/09/27/36/54 1486.868686868686868686868686869
18/36/09/27/36/54 1486.868686868686868686868686869
09/36/09/27/27/45 1486.868686868686868687
09/36/18/36/45/54 1486.868686868686868686868686868686868687
09/36/09/36/36/45 1486.868686868686868686868686869
09/36/09/36/36/45 1486.868686868686868686868686869
09/36/09/36/36/45 1486.868686868686868686868686869
09/36/09/36/36/45 1486.868686868686868686868686869
18/45/09/36/45/63 1486.868686868686868686868686868686868687
18/45/09/36/45/63 1486.868686868686868686868686868686868687
18/45/09/36/45/63 1486.868686868686868686868686868686868687
09/45/09/36/36/54 1486.868686868686868686868686869
09/45/18/45/54/63 1486.868686868686868686868686868686868686868686869
09/45/09/45/45/54 1486.868686868686868686868686868686868687
09/45/09/45/45/54 1486.868686868686868686868686868686868687
09/45/09/45/45/54 1486.868686868686868686868686868686868687
09/45/09/45/45/54 1486.868686868686868686868686868686868687
18/54/09/45/54/72 1486.868686868686868686868686868686868686868686869
18/54/09/45/54/72 1486.868686868686868686868686868686868686868686869
18/54/09/45/54/72 1486.868686868686868686868686868686868686868686869
09/54/09/45/45/63 1486.868686868686868686868686868686868687
09/54/18/54/63/72 1486.868686868686868686868686868686868686868686868686868687
09/54/09/54/54/63 1486.868686868686868686868686868686868686868686869
09/54/09/54/54/63 1486.868686868686868686868686868686868686868686869
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.