$ irb
irb(main):001:0> 2/3
=> 0
irb(main):002:0> 2.0/3
=> 0.666666666666667
irb(main):003:0>

Kent.

On 2/13/06, Ian Whitney <iwhitney / ssa-i.org> wrote:
> I'm trying to calculate the results of formulas that are stored in
> text files.
>
> For example, a file may contain the line: 1+2/3
>
> I want to take that line & get the result of the formula, 1.66 (roughly)
>
> The way to do this seems to be Kernel.eval. But I can't get it to
> work correctly. Here's my irb session:
>
> irb(main):001:0> a = "1+2/3"
> => "1+2/3"
> irb(main):002:0> b = eval(a)
> => 1
> irb(main):004:0> b.class
> => Fixnum
>
> I would think that eval(a) should return a Float, not a Fixnum.
>
> I thought maybe that eval wasn't following the standard order of
> operations, which could explain the return value of 1. So then I
> tried this:
>
> irb(main):005:0> a = "2/3"
> => "2/3"
> irb(main):006:0> b = eval(a)
> => 0
> irb(main):007:0> b.class
> => Fixnum
>
>
> So, it's not an order of operations thing.
>
> Maybe I shouldn't be using eval. But I can't find another option. Any
> thoughts?
>
> Thanks,
>
> Ian
>
>