From: Michael W. Ryder [mailto:_mwryder / worldnet.att.net] 
# I have been using Business Basic for over 25 years and it is what I 
# consider fixed point.  For example, entering 'Print 14.95*.6' 
# results in 
# 8.97.  The language uses a set precision which can be changed.  For 
# example if I tell it to print 120*.000003 with the default 
# precision of 
# 2 it displays 0.  If I change the precision to 6 and tell it to print 
# the same thing it displays .00036.  The computer stores the result in 
# the precision at the time of the operation so entering 
# 'a=120*.000003' 
# in precision 2 stores 0 in a.  Changing the precision to 6 afterwards 
# still shows that 0 is stored in a.  This is not like Ruby 
# using printf 
# where different formats show different results.

w ruby's bigdecimal, you can be precise as much as you want (limit is on the computer's power and the programmer's imagination). it's being used not only in business but also in scientific labs (that is as far as what i've heard fr ruby jap gossip/chat rooms)

this is one stupid example,

irb(main):013:0> a=BigDecimal("0.0"+"0"*100+"1")
=> #<BigDecimal:28b4dd4,'0.1E-101',4(108)>
irb(main):014:0> a+1
=> #<BigDecimal:28b26ec,'0.1000000000 0000000000 0000000000 0000000000 000000000
0 0000000000 0000000000 0000000000 0000000000 0000000000 001E1',108(140)>
irb(main):015:0> (a+1).to_s
=> "0.10000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000001E1"
irb(main):016:0> (a+1).to_s.size
=> 107
irb(main):017:0> (a+1)*(a+1)
=> #<BigDecimal:28a995c,'0.1000000000 0000000000 0000000000 0000000000 000000000
0 0000000000 0000000000 0000000000 0000000000 0000000000 0020000000 0000000000 0
000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000
000000 00001E1',208(276)>
irb(main):018:0>
irb(main):019:0> ((a+1)*(a+1)).to_s
=> "0.10000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000002000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000001E1"
irb(main):020:0> ((a+1)*(a+1)).to_s.size
=> 209

it's inspiring. really.
kind regards -botp