Re: Unexpected behavior of Floor and IntegerPart
- To: mathgroup at smc.vnet.net
- Subject: [mg97918] Re: [mg97872] Unexpected behavior of Floor and IntegerPart
- From: Bob Hanlon <hanlonr at cox.net>
- Date: Wed, 25 Mar 2009 05:46:42 -0500 (EST)
- Reply-to: hanlonr at cox.net
The observed behavior is consistent. If you want the functions to behave based on the apparent values rather than the machine numbers, then use Rationalize or Round to whatever precision level that you want. This will probably just shift the "unexpected behavior" to some other condition. myIntegerPart[x_] := IntegerPart[Rationalize[x]] myFloor[x_] := Floor[Rationalize[x]] myIntegerPart[0.29*100] 29 myFloor[0.29*100] 29 Bob Hanlon On Tue, Mar 24, 2009 at 8:07 AM , Curtis Osterhoudt wrote: > Dear List, > I'm sure this is a result of non-infinite-precision arithmetic, but > it would be nice to have a more consistent behavior: > > In[26]:= IntegerPart[0.29*100] > > Out[26]= 28 > > In[25]:= Floor[0.29*100] > > Out[25]= 28 > > In[27]:= Floor[(29/100)*100] > > Out[27]= 29 > > In[32]:= (Floor[#1*100] & ) /@ Range[0, 1, 0.01] > > Out[32]= {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, \ > 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 28, 30, 31, 32, 33, \ > 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, \ > 51, 52, 53, 54, 55, 56, 57, 57, 59, 60, 61, 62, 63, 64, 65, 66, 67, > 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, \ > 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100} > > In[33]:= Differences[%] > > Out[33]= {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, > \ > 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \ > 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 1, 1, 1, 1, 1, 1, > 1, \ > 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, > 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1} > > > > An interesting hint as to what may be happening is obtained by: > > ListPlot[Differences[(Floor[#1*100] & ) /@ Range[0, 100, 0.01]]] > > Regards, C.O. > > > > -- > ========================================================== > Curtis Osterhoudt > cfo at remove_this.lanl.and_this.gov > PGP Key ID: 0x4DCA2A10 > Please avoid sending me Word or PowerPoint attachments > See http://www.gnu.org/philosophy/no-word-attachments.html > ==========================================================