It may do integer truncation, but we need to think of what an Array actually is as far as the structure goes. What would one expect to get out of [0,1,2][0.3] ? Should it be 30% of the first element? That doesn't seem right. With arrays, you are either in one element or not. Integers make more sense because they represent the location you're in. Either the 0 spot, 1 spot, or 2 spot. Think of a row of lockers at school. You can't be partially between each locker. It makes more sense to only use one locker or the next. On Wed, 30 Mar 2011 05:08:36 +0900, Chad Perrin <code / apotheon.net> wrote: > On Wed, Mar 30, 2011 at 03:35:21AM +0900, Jeff Dik wrote: >> Why can a floating point number be used as an array index? Anybody >> know of a good use case for this? >> >> irb(main):020:0> [1, 2, 3][0.3] >> 1 >> irb(main):021:0> [1, 2, 3][0.9] >> 1 > > I don't know about why, exactly, or about use cases (though I suppose it > might just make things easier sometimes, without errors cropping up all > over the place if you're working with floating point numbers a lot and > are too lazy to do integer conversions yourself). How seems, from a > little experimenting, to be self-evident to me: > > $ irb > irb(main):001:0> [1,2,3][0.7] > => 1 > irb(main):002:0> [1,2,3][1.7] > => 2 > irb(main):003:0> [1,2,3][1.1] > => 2 > irb(main):004:0> [1,2,3][-0.1] > => 1 > irb(main):005:0> [1,2,3][-1.1] > => 3 > > It looks like it just does integer truncation.