monogreen - Tank you very much !

Weird shit with Ruby's float formatting

>> 1.upto 50  do |x| f = ('1.' + ('1' * x) + '5' ); puts "%.#{x}f % #{f}: " + "%.#{x}f" % f.to_f end
%.1f % 1.15: 1.1
%.2f % 1.115: 1.11
%.3f % 1.1115: 1.111
%.4f % 1.11115: 1.1112
%.5f % 1.111115: 1.11112
%.6f % 1.1111115: 1.111112
%.7f % 1.11111115: 1.1111111
%.8f % 1.111111115: 1.11111111
%.9f % 1.1111111115: 1.111111112
%.10f % 1.11111111115: 1.1111111112
%.11f % 1.111111111115: 1.11111111112
%.12f % 1.1111111111115: 1.111111111111
%.13f % 1.11111111111115: 1.1111111111112
%.14f % 1.111111111111115: 1.11111111111111
%.15f % 1.1111111111111115: 1.111111111111112
%.16f % 1.11111111111111115: 1.1111111111111112
%.17f % 1.111111111111111115: 1.11111111111111116
%.18f % 1.1111111111111111115: 1.111111111111111160
%.19f % 1.11111111111111111115: 1.1111111111111111605
%.20f % 1.111111111111111111115: 1.11111111111111116045
%.21f % 1.1111111111111111111115: 1.111111111111111160454
%.22f % 1.11111111111111111111115: 1.1111111111111111604544
%.23f % 1.111111111111111111111115: 1.11111111111111116045436
%.24f % 1.1111111111111111111111115: 1.111111111111111160454357
%.25f % 1.11111111111111111111111115: 1.1111111111111111604543567
%.26f % 1.111111111111111111111111115: 1.11111111111111116045435665
%.27f % 1.1111111111111111111111111115: 1.111111111111111160454356650
%.28f % 1.11111111111111111111111111115: 1.1111111111111111604543566500
%.29f % 1.111111111111111111111111111115: 1.11111111111111116045435665001
%.30f % 1.1111111111111111111111111111115: 1.111111111111111160454356650007
%.31f % 1.11111111111111111111111111111115: 1.1111111111111111604543566500070
%.32f % 1.111111111111111111111111111111115: 1.11111111111111116045435665000696
%.33f % 1.1111111111111111111111111111111115: 1.111111111111111160454356650006957
%.34f % 1.11111111111111111111111111111111115: 1.1111111111111111604543566500069574
%.35f % 1.111111111111111111111111111111111115: 1.11111111111111116045435665000695735
%.36f % 1.1111111111111111111111111111111111115: 1.111111111111111160454356650006957352
%.37f % 1.11111111111111111111111111111111111115: 1.1111111111111111604543566500069573522
%.38f % 1.111111111111111111111111111111111111115: 1.11111111111111116045435665000695735216
%.39f % 1.1111111111111111111111111111111111111115: 1.111111111111111160454356650006957352161
%.40f % 1.11111111111111111111111111111111111111115: 1.1111111111111111604543566500069573521614
%.41f % 1.111111111111111111111111111111111111111115: 1.11111111111111116045435665000695735216141
%.42f % 1.1111111111111111111111111111111111111111115: 1.111111111111111160454356650006957352161407
%.43f % 1.11111111111111111111111111111111111111111115: 1.1111111111111111604543566500069573521614075
%.44f % 1.111111111111111111111111111111111111111111115: 1.11111111111111116045435665000695735216140747
%.45f % 1.1111111111111111111111111111111111111111111115: 1.111111111111111160454356650006957352161407471
%.46f % 1.11111111111111111111111111111111111111111111115: 1.1111111111111111604543566500069573521614074707
%.47f % 1.111111111111111111111111111111111111111111111115: 1.11111111111111116045435665000695735216140747070
%.48f % 1.1111111111111111111111111111111111111111111111115: 1.111111111111111160454356650006957352161407470703
%.49f % 1.11111111111111111111111111111111111111111111111115: 1.1111111111111111604543566500069573521614074707031
%.50f % 1.111111111111111111111111111111111111111111111111115: 1.11111111111111116045435665000695735216140747070312

ruby 1.8.7 (2009-06-12 patchlevel 174) [x86_64-linux], MBARI 0×6770, Ruby Enterprise Edition 2009.10

Thanks to Gerriet Riessen: http://gist.github.com/631981

Post a comment


(lesstile enabled - surround code blocks with ---)