In article <[EMAIL PROTECTED]>,
Paul Rubin  <http://[EMAIL PROTECTED]> wrote:
>Lance Hoffmeyer <[EMAIL PROTECTED]> writes:
>> def even_odd_round(num):
>>      if(round(num,2) + .5 == int(round(num,2)) + 1):
>>              if num > .5:
>>                   if(int(num) % 2):
>>                      num = round(num,2) + .1 #an odd number
>>                   else:
>>                      num = round(num,2) - .1 #an even number
>>              else:
>>                 num = 1
>>      rounded_num = int(round(num,0))
>>      return rounded_num
>
>I would also rewrite this function.  It's quite hard to figure out
>what it's intended to do.  At minimum it should be carefully
                        .
                        .
                        .
>def even_odd_round(num):
>   assert num >= 0
>
>   # separate the number's integer and fractional parts
>   intpart, fracpart = int(num), num % 1.0
>
>   # decide what to do based on the fractional part
>   if fracpart < 0.495:
>      return intpart                    # round downward
>   elif fracpart > 0.505 or intpart==0:
>      return intpart+1                  # round upward
>   else:
>      return intpart + intpart % 2      # round to even


I have even less idea than Paul what the true intent of even_odd_round()
is.  I offer, though, the general observation that it's VERY often possible
to do what people want in this sort of regard with a simple use of
formatting--something like

    "%.3f" % num

If one comes from C or Java, it can be hard to appreciate immediately how
useful this is.  It's also likely to be more robust than anything naively
written "by hand".
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to