Forum: Ruby on Rails Ruby can't do arithmetic? How do I fix this?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Paul Jonathan T. (Guest)
on 2008-12-03 04:05
(Received via mailing list)
Hi,

I have this code @accept_ratio = @no_quotes / @no_accepted_quotes. I
am deviding an integer by an integer but the resultant is not an
iterger it should be floating to x decimal places. I was under the
impression that ruby took care of this sort of thing.

 @no_quotes is 551
 @no_accepted_quotes is 119

I am getting 4 in @accept_ratio which is wrong. It should be 4.63....
to however many decimal places.

How do I persuade ruby not to chop the decimal off? I would like
results to 2 decimal places.

Thanks in advance,

Paul Thompson
Norm (Guest)
on 2008-12-03 04:08
(Received via mailing list)
Paul Jonathan T. wrote:
> I am getting 4 in @accept_ratio which is wrong. It should be 4.63....
> to however many decimal places.
>
> How do I persuade ruby not to chop the decimal off? I would like
> results to 2 decimal places.
>
> Thanks in advance,
>
> Paul Thompson
>
>
Change one of them to float.  Ruby uses integer arithmetic with
integers.
Paul Jonathan T. (Guest)
on 2008-12-03 04:21
(Received via mailing list)
Hi Norm,

I am not sure how to do that. I have tried .to_f but that did not make
any difference.

Paul

2008/12/3 Norm <removed_email_address@domain.invalid>:
Norm (Guest)
on 2008-12-03 04:36
(Received via mailing list)
Paul Jonathan T. wrote:
> Hi Norm,
>
> I am not sure how to do that. I have tried .to_f but that did not make
> any difference.
>
> Paul
>
When you say you tried .to_f do you mean you tried

@accept_ratio = @no_quotes.to_f / @no_accepted_quotes.to_f

It works for me.  You only really need to convert either of the
arguments.

@accept_ratio.to_f = @no_quotes / @no_accepted_quotes will not work
because it will first evaluate to the integer 4 and then convert that to
a float....
Paul Jonathan T. (Guest)
on 2008-12-03 04:55
(Received via mailing list)
Thanks Norm,

Your second example is what I did (@accept_ratio.to_f = @no_quotes /
@no_accepted_quote) so it did not work.

but when I changed it to how you showed inyour first example, it
worked just fine.

Thank you very much.

Paul

2008/12/3 Norm <removed_email_address@domain.invalid>:
This topic is locked and can not be replied to.