Ruby can't do arithmetic? How do I fix this?


#1

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


#2

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.


#3

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:


#4

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…


#5

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: