Inconsistent Behavior Converting String to Integer/Float

$ruby-yarv -v
ruby 2.0.0 (Base: Ruby 1.9.0 2006-02-14) [powerpc-darwin8.5.0]
YARVCore 0.4.0 Rev: 466 (2006-02-22) [opts: ]

$ruby -v
ruby 1.8.4 (2005-12-24) [powerpc-darwin8.3.0]

Correct behavior

num = “+3”
Float(num) # -> 3.0
Integer(num) # -> 3

Strange behavior

num = “3e2”
Float(num) # -> 300.0
Integer(num) # -> ArgumentError

Why is an ArgumentError raised in the second example?

OT: ruby-talk seems to be rejecting my email. I sent this twice, and
both times it did not make it to the list.

– Daniel

“D” == Daniel H. [email protected] writes:

D> $ruby-yarv -v
D> ruby 2.0.0 (Base: Ruby 1.9.0 2006-02-14) [powerpc-darwin8.5.0]
D> YARVCore 0.4.0 Rev: 466 (2006-02-22) [opts: ]

You have a problem with your version of yarv

uln% ruby -ve ‘num = “+3”; p num, Float(num), Integer(num)’
ruby 1.9.0 (2006-02-24) [x86_64-linux]
“+3”
3.0
3
uln%

uln% ruby-yarv -ve ‘num = “+3”; p num, Float(num), Integer(num)’
ruby 2.0.0 (Base: Ruby 1.9.0 2006-02-14) [x86_64-linux]
YARVCore 0.4.0 Rev: 475 (2006-02-23) [opts: ]
“+3”
3.0
3
uln%

Guy Decoux

ts wrote:

You have a problem with your version of yarv

I was asking specifically about the second example:

num = “3e2”
Float(num) # -> 300.0
Integer(num) # -> ArgumentError

Guy Decoux

– Daniel

“D” == Daniel H. [email protected] writes:

D> I was asking specifically about the second example:

OK, sorry, I’ve not understood.

Even 1.6.8 give the same result

svg% ./ruby -ve ‘Integer(“3e2”)’
ruby 1.6.8 (2002-12-24) [i686-linux]
-e:1:in `Integer’: invalid value for Integer: “3e2” (ArgumentError)
from -e:1
svg%

1.4.2 give a strange result :slight_smile:

Guy Decoux

I also find using a capatilized method name very odd and
un-rubyish. Looking through the docs, I see there is Array(),
Float(), Integer(), String(), URI(), DelegateClass(), and
possibly more. Why is this style used over Class#new?

– Daniel

Hi,

In message “Re: Inconsistent Behavior Converting String to
Integer/Float”
on Sun, 26 Feb 2006 00:07:36 +0900, Daniel H.
[email protected] writes:

|# Strange behavior
|num = “3e2”
|Float(num) # → 300.0
|Integer(num) # → ArgumentError

Integer() does not understand scientific notation as an integer
representation.

						matz.