This page contains automated test results for code from O'Reilly's Ruby Cookbook. If this code looks interesting or useful, you might want to buy the whole book.
| Converting Between Degrees and Radians | ||
|---|---|---|
| Code | Expected | Actual |
class Numeric
def degrees
self * Math::PI / 180
end
end
90.degrees |
1.5707963267949 | 1.5707963267949 |
Math::tan(45.degrees) |
1.0 | 1.0 |
Math::cos(90.degrees) |
6.12303176911189e-17 | 6.12303176911189e-17 |
Math::sin(90.degrees) |
1.0 | 1.0 |
Math::sin(89.9.degrees) |
0.999998476913288 | 0.999998476913288 |
Math::sin(45.degrees) |
0.707106781186547 | 0.707106781186547 |
Math::cos(45.degrees) |
0.707106781186548 | 0.707106781186548 |
require 'rubygems'
require 'units/base'
class Numeric
remove_method(:degrees) # Remove the implementation given in the Solution
add_unit_conversions(:angle => { :radians => 1, :degrees => Math::PI/180 })
add_unit_aliases(:angle => { :degrees => [:degree], :radians => [:radian] })
end
90.degrees |
90.0 | 90.0 |
90.degrees.unit |
:degrees | :degrees |
90.degrees.to_radians |
1.5707963267949 | 1.5707963267949 |
90.degrees.to_radians.unit |
:radians | :radians |
1.degree.to_radians |
0.0174532925199433 | 0.0174532925199433 |
1.radian.to_degrees |
57.2957795130823 | 57.2957795130823 |
Math::sin(90.degrees) |
0.893996663600558 | 0.893996663600558 |
Math::sin(90.degrees.to_radians) |
1.0 | 1.0 |
class << Math
alias old_sin sin
def sin(x)
old_sin(x.unit == :degrees ? x.to_radians : x)
end
end
90.degrees |
90.0 | 90.0 |
Math::sin(90.degrees) |
1.0 | 1.0 |
Math::sin(Math::PI/2.radians) |
1.0 | 1.0 |
Math::sin(Math::PI/2) |
1.0 | 1.0 |