Modul (%) in python not like in C?

Bryan Olson fakeaddress at nowhere.org
Sun Sep 9 20:27:29 EDT 2007


Dotan Cohen wrote:
> On 10/09/2007, Bryan Olson <fakeaddress at nowhere.org> wrote:
>> Not according to the C standard:
>>
>>      When integers are divided, the result of the / operator is
>>      the algebraic quotient with any fractional part discarded.(87)
>>      If the quotient a/b is representable, the expression
>>      (a/b)*b + a%b shall equal a.
>>      [...]
>>      87) This is often called ''truncation toward zero''.
>>
>>      [International Standard ISO/IEC 9899:1999, Section 6.5.5
>>      Multiplicative operators, Paragraph 6 and footnote 87]
> 
> This seems most logical to me. Turbo C is against the standard, then.

No, Turbo C is yielding the one-and-only correct result with respect
to the C standard:

    (a/b)*b + a%b shall equal a

    (-111/10)*10 + -111%10 shall equal -111

    (-111/10) evaluates to -11 by the truncate-toward-zero rule

    -11*10 + -111%10 shall equal -111

    -110 + -111%10 shall equal -111

    -111%10 shall equal -1


-- 
--Bryan



More information about the Python-list mailing list