# Basic question about \<\< Float

**URL:** <https://www.ruby-forum.com/t/basic-question-about-float/92604>\
**Category:** Ruby\
**Created:** [April 21, 2007, 12:51pm UTC](https://www.ruby-forum.com/t/basic-question-about-float/92604 "2007-04-21T12:51:58Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![ycycyc](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/a183cd/32.png) [@ycycyc](https://www.ruby-forum.com/u/ycycyc)\
**Post date:** [April 21, 2007, 12:51pm UTC](https://www.ruby-forum.com/t/basic-question-about-float/92604/1 "2007-04-21T12:51:58Z")

</div>

Hi,  
I am beginner in Ruby.  
I wonder why the following doesn’t work.

class \<\< Float  
public  
def format(args)  
puts “self=#{self}”  
puts “args=#{args}”  
Kernel.format(args, self)  
end  
end  
puts 45.5678.format("%.02f")  
Gives private method `format’ called for 45.5678:Float (NoMethodError)

Thanks  
yc

---

<div class="post-metadata">

**Author:** ![ycycyc](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/a183cd/32.png) [@ycycyc](https://www.ruby-forum.com/u/ycycyc)\
**Post date:** [April 21, 2007, 1:05pm UTC](https://www.ruby-forum.com/t/basic-question-about-float/92604/2 "2007-04-21T13:05:59Z")

</div>

On 21.04.2007 12:52, yc wrote:

> ```
> Kernel.format(args, self)
> 
> ```
> 
> end  
> end  
> puts 45.5678.format("%.02f")  
> Gives private method `format’ called for 45.5678:Float (NoMethodError)

You are defining a class instance method and trying to call an instance  
method. What you are really calling is this:

$ ruby -e ‘p method(:format)’  
#\<Method: Object(Kernel)#format\>

You would have to invoke your method as

Float.format(…)

However, given the fact that you can also do

$ ruby -e ‘p “%.02f” % 1234’  
“1234.00”

I don’t see any reason why you would define the method you are trying to  
define. If you insist, you should do

irb(main):001:0\> class Float  
irb(main):002:1\> def format(s) s % self end  
irb(main):003:1\> end  
=\> nil  
irb(main):004:0\> 1.234.format “%.02f”  
=\> “1.23”  
irb(main):005:0\> 1.0.format “%.02f”  
=\> “1.00”

Kind regards

robert
