[#104307] Float truncate — Eustáquio Rangel <eustaquiorangel@...>
Hi!
4 messages
2021/06/16
[ruby-core:104307] Float truncate
From:
Eustáquio Rangel <eustaquiorangel@...>
Date:
2021-06-16 12:24:39 UTC
List:
ruby-core #104307
Hi! A customer just noticed a weird behaviour on its app, regarding float truncate. I know floats are wild beasts and we can have some surprises as stated on the truncate docs as (0.3 / 0.1).truncate => 2 But let me show what they found: > 291.1.truncate(2) => 291.1 > 291.2.truncate(2) => 291.2 > 291.3.truncate(2) => 291.3 > 291.4.truncate(2) => 291.39 <------------------ here! > 291.5.truncate(2) => 291.5 Notice 291.4 truncating to 2, returns 291.39! They have another number like .3 that truncates to .2, so I just took a look on rb_float_floor and found that 291.4 is converted to 29139.000000 after powered and sent to floor(number * f) and then proceeds to DBL2NUM when it returns 291.39. I advised them to use another approach other than truncate (round don't work for them because of the ceil/floor operation) but I'm curious if it is a known behaviour of float truncate. Thanks. Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>