# Quick Float question

**URL:** <https://www.ruby-forum.com/t/quick-float-question/111808>\
**Category:** Ruby\
**Created:** [August 11, 2007, 3:11am UTC](https://www.ruby-forum.com/t/quick-float-question/111808 "2007-08-11T03:11:53Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![beaon](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/dec6dc/32.png) [@beaon](https://www.ruby-forum.com/u/beaon)\
**Post date:** [August 11, 2007, 3:11am UTC](https://www.ruby-forum.com/t/quick-float-question/111808/1 "2007-08-11T03:11:53Z")

</div>

I’m doing some math with Ruby and I’d really like to know why:

irb(main):002:0\> 10.0 / 3.0  
=\> 3.33333333333333

but

irb(main):003:0\> (10.0 / 3.0) == 3.33333333333333

is

=\> false

Thanks 🙂

Cliff

---

<div class="post-metadata">

**Author:** ![beaon](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/dec6dc/32.png) [@beaon](https://www.ruby-forum.com/u/beaon)\
**Post date:** [August 11, 2007, 3:27am UTC](https://www.ruby-forum.com/t/quick-float-question/111808/2 "2007-08-11T03:27:54Z")

</div>

This is because the 3.33333333333333 is not the exact value you got  
from 10.0/3.0. Ruby store more information you can’t not see.  
So if you want to compare the float, you can write it as  
(10.0/3.0 - 3.3333333333).abs \<= 0.0001

---

<div class="post-metadata">

**Author:** ![beaon](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/dec6dc/32.png) [@beaon](https://www.ruby-forum.com/u/beaon)\
**Post date:** [August 11, 2007, 3:38am UTC](https://www.ruby-forum.com/t/quick-float-question/111808/3 "2007-08-11T03:38:54Z")

</div>

Hank G. wrote:

> This is because the 3.33333333333333 is not the exact value you got  
> from 10.0/3.0. Ruby store more information you can’t not see.  
> So if you want to compare the float, you can write it as  
> (10.0/3.0 - 3.3333333333).abs \<= 0.0001

This is what I thought. Thanks for clarifying that. I need it  
primarily for unit testing, I’ll try this technique and see how I go.

Thanks again

Cliff

---

<div class="post-metadata">

**Author:** ![beaon](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/dec6dc/32.png) [@beaon](https://www.ruby-forum.com/u/beaon)\
**Post date:** [August 11, 2007, 3:46am UTC](https://www.ruby-forum.com/t/quick-float-question/111808/4 "2007-08-11T03:46:56Z")

</div>

On 8/10/07, Cliff R. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Hank G. wrote:
> 
> > This is because the 3.33333333333333 is not the exact value you got  
> > from 10.0/3.0. Ruby store more information you can’t not see.  
> > So if you want to compare the float, you can write it as  
> > (10.0/3.0 - 3.3333333333).abs \<= 0.0001
> 
> This is what I thought. Thanks for clarifying that. I need it  
> primarily for unit testing, I’ll try this technique and see how I go.

assert\_in\_delta 3.3333333333, 10.0/3.0, 0.0001

-greg

---

<div class="post-metadata">

**Author:** ![beaon](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/dec6dc/32.png) [@beaon](https://www.ruby-forum.com/u/beaon)\
**Post date:** [August 11, 2007, 5:38am UTC](https://www.ruby-forum.com/t/quick-float-question/111808/5 "2007-08-11T05:38:00Z")

</div>

Gregory B. wrote:

> assert\_in\_delta 3.3333333333, 10.0/3.0, 0.0001
> 
> -greg

Perfect, thankyou 🙂

Cliff
