summaryrefslogtreecommitdiff
path: root/kernel.rb
diff options
context:
space:
mode:
authorS.H <gamelinks007@gmail.com>2020-04-22 09:49:13 +0900
committerGitHub <noreply@github.com>2020-04-22 09:49:13 +0900
commit17083011eed7d56981f2b227574527e4bf23eb65 (patch)
tree98c998d925a7e9c87c473eafe5e98dcf9600f69c /kernel.rb
parentad63ae6619d26488725e05d74f2bfc3ab185b0c3 (diff)
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|
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/3048 Merged-By: nobu <nobu@ruby-lang.org>
Diffstat (limited to 'kernel.rb')
-rw-r--r--kernel.rb24
1 files changed, 24 insertions, 0 deletions
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 <i>arg</i> converted to a float. Numeric types are
+ # converted directly, and with exception to String and
+ # <code>nil</code> the rest are converted using
+ # <i>arg</i><code>.to_f</code>. Converting a String with invalid
+ # characters will result in a ArgumentError. Converting
+ # <code>nil</code> generates a TypeError. Exceptions can be
+ # suppressed by passing <code>exception: false</code>.
+ #
+ # 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