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 |