Re: gives 919.8359999999999?`
- To: mathgroup at smc.vnet.net
- Subject: [mg132112] Re: gives 919.8359999999999?`
- From: Richard Fateman <fateman at cs.berkeley.edu>
- Date: Sun, 8 Dec 2013 04:34:58 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-outx@smc.vnet.net
- Delivered-to: mathgroup-newsendx@smc.vnet.net
- References: <l7rtbp$o5b$1@smc.vnet.net>
On 12/5/2013 11:11 PM, Bill Rowe wrote: ..... And this is characteristic is > inherent in any modern computer. At least when using double-precision binary floating-point arithmetic. Which is what Mathematica happens to be using here. It doesn't always. See below. > > If you want to avoid this characteristic in Mathematica, simply > use exact arithmetic. That may seem simple, but can lead to exponentially expensive arithmetic. Compare Timing[Sum[1/n,{n,1,100000];] to Timing[Sum[1.0/n,{n,1,100000];] As for your particular example, you could try this: FullForm[916.53600000000000000 + 3.300000000000000000000] which gets all the digits you expect. Even better you (and other readers of this note) could read David Goldberg, "What Every Computer Scientist Should Know About Floating-Point Arithmetic". That is > > In[1]:= 916536/1000 + 33/10 > > Out[1]= 229959/250 > > In[2]:= N[%] > > Out[2]= 919.836 > > In[3]:= FullForm[%] > > Out[3]//FullForm= 919.836` > >