Float Arithmetic: Return A Fixnum When Float == Fixnum

j = 5/2.0
=> 2.5

I’m fine with this

j = 4/2.0
=> 2.0

Useless precision -for me. I want 2!

j == j.to_i ? j.to_i : j
=> 2

Is there a “better” way?

MaggotChild wrote:

j = 5/2.0
=> 2.5

I’m fine with this

j = 4/2.0
=> 2.0

Useless precision -for me. I want 2!

The notation is misleading. It’s not a question of precision, but of
type. You can think of 2.0 as 2:Float, not 2 to 2 significant figures.

j == j.to_i ? j.to_i : j
=> 2

Is there a “better” way?

Why even bother?

Best,
–Â
Marnen Laibow-Koser
http://www.marnen.org
[email protected]

Marnen Laibow-Koser wrote:

MaggotChild wrote:

j = 5/2.0
=> 2.5

I’m fine with this

j = 4/2.0
=> 2.0

Useless precision -for me. I want 2!

The notation is misleading. It’s not a question of precision, but of
type. You can think of 2.0 as 2:Float, not 2 to 2 significant figures.

j == j.to_i ? j.to_i : j
=> 2

Is there a “better” way?

Why even bother?

Best,
–Â
Marnen Laibow-Koser
http://www.marnen.org
[email protected]

It occurs to me that you may also want to play with Rational.

Best,
–Â
Marnen Laibow-Koser
http://www.marnen.org
[email protected]

MaggotChild wrote:

On Dec 1, 5:52�am, Marnen Laibow-Koser [email protected] wrote:

The notation is misleading. �It’s not a question of precision, but of
type. �You can think of 2.0 as 2:Float, not 2 to 2 significant figures.

Yes, I do, but when it comes to printing, Float does not.

You can always redefine Float.to_s. Changing the underlying type,
though, is probably a poor idea.

j == j.to_i ? j.to_i : j
=> 2

Is there a “better” way?

Why even bother?

OCD

Apply your OCD in the right places, though! :slight_smile:

Best,
–Â
Marnen Laibow-Koser
http://www.marnen.org
[email protected]

On Dec 1, 5:52 am, Marnen Laibow-Koser [email protected] wrote:

The notation is misleading. It’s not a question of precision, but of
type. You can think of 2.0 as 2:Float, not 2 to 2 significant figures.

Yes, I do, but when it comes to printing, Float does not.

j == j.to_i ? j.to_i : j
=> 2

Is there a “better” way?

Why even bother?

OCD

Marnen Laibow-Koser wrote:

=> 2
[email protected]
Ugly, but what the hey:

j = 2.0
sprintf(’%g’, j) --> “2”

j = 2.50000001
sprintf(’%g’, j) --> “2.5”

Works on integers, too:

j = 2
sprintf(’%g’, j) --> “2”

Glen

On Dec 1, 12:24 pm, “Glen F. Pankow” [email protected] wrote:

j = 2.50000001
sprintf(‘%g’, j) → “2.5”

Works on integers, too:

j = 2
sprintf(‘%g’, j) → “2”

Ah, I knew it -a better way. And to think, it was with a printf
format… All those years of C down the toilet