<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 5.5.2654.45">
<TITLE>RE: Problems using modulo</TITLE>
</HEAD>
<BODY>
<P><FONT SIZE=2>[Brian Gough]</FONT>
</P>
<P><FONT SIZE=2>#- > Results:</FONT>
<BR><FONT SIZE=2>#- > 5.9 mod 2.0 = 1.9</FONT>
<BR><FONT SIZE=2>#- > 6.0 mod 2.0 = 2.0 !!!!!!</FONT>
<BR><FONT SIZE=2>#- > 6.1 mod 2.0 = 0.1</FONT>
<BR><FONT SIZE=2>#- > </FONT>
<BR><FONT SIZE=2>#- > I don't know much about how Python does its floating point, but it</FONT>
<BR><FONT SIZE=2>#- > seems like a bug to me ?</FONT>
<BR><FONT SIZE=2>#- </FONT>
<BR><FONT SIZE=2>#- This is a common "feature" of floating-point arithmetic. </FONT>
<BR><FONT SIZE=2>#- 0.1 does not</FONT>
<BR><FONT SIZE=2>#- have an exact machine representation in binary, so the numbers</FONT>
<BR><FONT SIZE=2>#- displayed are not exact (e.g. 6.0 is actually 5.9999999... with a</FONT>
<BR><FONT SIZE=2>#- difference O(10^-15)). There is an appendix in the Python tutorial</FONT>
<BR><FONT SIZE=2>#- which discusses this, with more examples.</FONT>
</P>
<P><FONT SIZE=2>You can read also PEP 327 where I propose the Decimal data type, a decimal floating point.</FONT>
</P>
<BR>
<P><FONT SIZE=2>#- > What is the best workaround so that I can get my code working as</FONT>
<BR><FONT SIZE=2>#- > desired ?</FONT>
<BR><FONT SIZE=2>#- > (ie I just want to tell whether my time "t" is an exact multiple of</FONT>
<BR><FONT SIZE=2>#- > the time interval, 2.0 seconds in this case).</FONT>
<BR><FONT SIZE=2>#- </FONT>
<BR><FONT SIZE=2>#- For exact arithmetic, work with integers (e.g. in this case multiply</FONT>
<BR><FONT SIZE=2>#- everything 10) or compute the difference from zero in the modulus, d,</FONT>
<BR><FONT SIZE=2>#- </FONT>
<BR><FONT SIZE=2>#- s = t % interval</FONT>
<BR><FONT SIZE=2>#- d = min (s, interval-s)</FONT>
<BR><FONT SIZE=2>#- </FONT>
<BR><FONT SIZE=2>#- and compare it with a small tolerance, e.g. 1e-10 or something</FONT>
<BR><FONT SIZE=2>#- appropriate to your problem. HTH.</FONT>
</P>
<P><FONT SIZE=2>...or work with Decimal.</FONT>
</P>
<P><FONT SIZE=2>. Facundo</FONT>
</P>
<BR>
<BR>
<BR>
<BR>
<P><B><FONT SIZE=2>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .</FONT></B></P>
<P><B><U><FONT SIZE=2>ADVERTENCIA </FONT></U> </B>
</P>
<P><B><FONT SIZE=2>La información contenida en este mensaje y cualquier archivo anexo al mismo, son para uso exclusivo del destinatario y pueden contener información confidencial o propietaria, cuya divulgación es sancionada por la ley. </FONT></B></P>
<P><B><FONT SIZE=2>Si Ud. No es uno de los destinatarios consignados o la persona responsable de hacer llegar este mensaje a los destinatarios consignados, no está autorizado a divulgar, copiar, distribuir o retener información (o parte de ella) contenida en este mensaje. Por favor notifíquenos respondiendo al remitente, borre el mensaje original y borre las copias (impresas o grabadas en cualquier medio magnético) que pueda haber realizado del mismo. </FONT></B></P>
<P><B><FONT SIZE=2>Todas las opiniones contenidas en este mail son propias del autor del mensaje y no necesariamente coinciden con las de Telefónica Comunicaciones Personales S.A. o alguna empresa asociada. </FONT></B></P>
<P><B><FONT SIZE=2>Los mensajes electrónicos pueden ser alterados, motivo por el cual Telefónica Comunicaciones Personales S.A. no aceptará ninguna obligación cualquiera sea el resultante de este mensaje. </FONT></B></P>
<P><B><FONT SIZE=2>Muchas Gracias.</FONT></B>
</P>
</BODY>
</HTML>