From 17083011eed7d56981f2b227574527e4bf23eb65 Mon Sep 17 00:00:00 2001 From: "S.H" Date: Wed, 22 Apr 2020 09:49:13 +0900 Subject: support builtin for Kernel#Float # Iteration per second (i/s) | |compare-ruby|built-ruby| |:------------|-----------:|---------:| |float | 30.395M| 38.314M| | | -| 1.26x| |float_true | 3.833M| 27.322M| | | -| 7.13x| |float_false | 4.182M| 24.938M| | | -| 5.96x| --- kernel.rb | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'kernel.rb') diff --git a/kernel.rb b/kernel.rb index d3fa9d8053..aa3f8b72a4 100644 --- a/kernel.rb +++ b/kernel.rb @@ -26,4 +26,28 @@ module Kernel def clone(freeze: nil) __builtin_rb_obj_clone2(freeze) end + + module_function + + # + # call-seq: + # Float(arg, exception: true) -> float or nil + # + # Returns arg converted to a float. Numeric types are + # converted directly, and with exception to String and + # nil the rest are converted using + # arg.to_f. Converting a String with invalid + # characters will result in a ArgumentError. Converting + # nil generates a TypeError. Exceptions can be + # suppressed by passing exception: false. + # + # Float(1) #=> 1.0 + # Float("123.456") #=> 123.456 + # Float("123.0_badstring") #=> ArgumentError: invalid value for Float(): "123.0_badstring" + # Float(nil) #=> TypeError: can't convert nil into Float + # Float("123.0_badstring", exception: false) #=> nil + # + def Float(arg, exception: true) + __builtin_rb_f_float(arg, exception) + end end -- cgit v1.2.1