Differences between revisions 1 and 8 (spanning 7 versions)
Revision 1 as of 2004-12-08 21:50:30
Size: 354
Editor: cs-lt-04
Comment:
Revision 8 as of 2005-01-09 14:12:48
Size: 1465
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
Describe SubtractionQuestion here.
Line 7: Line 6:
Any explanation?
Line 9: Line 7:
Anyone know why?
Line 10: Line 9:
Terry S - tscott@fisher.unco.edu

----

That is what floor division does, it reduces the value to the next lowest whole number. If you want to separate the whole number and fractional part, use math.modf:
{{{
from __future__ import division
import math
print math.modf(25/12)
--> (0.08333, 2.0)
print math.modf(-25/12)
--> (-0.08333, -2.0)

#to just print the whole number as an int:
print int(math.modf(25/12)[1])
}}}

----

-3 is the correct answer to the expression -25/12

Here is why.

Consider the statement print 25/12 and print 25%12
{{{>>> print 25/12
2
>>> print 25%12
1}}}

This is because 25 = 2 * '''12''' + 1

So print -25/12 and print -25%12 gives you
{{{>>> print -25/12
-3
>>> print -25%12
11}}}

Because -25 = -3 * '''12''' + 11

Your suggested answer -25/12 = -2 implies that -25%12 = -1

-25 = -2 * '''12''' + -1

But the result of A%B must be positive so -25%12 = 11 instead of -1
thus -25/12 must be -3 instead of -2

  ----

Please see the Python Programming FAQ, [http://www.python.org/doc/faq/programming.html#why-does-22-10-return-3 question 1.3.2], for an explanation.

I discovered this when my students were creating a fraction class. 7/4 = 1 however -7/4 = -2 It seems to me the second result should be -1 It appears it is using the floor function but it isn't what my students wanted nor can I think of when anyone would want this result. Anyone know why? Thanks for any help Terry S - tscott@fisher.unco.edu


That is what floor division does, it reduces the value to the next lowest whole number. If you want to separate the whole number and fractional part, use math.modf:

from __future__ import division
import math
print math.modf(25/12)
--> (0.08333, 2.0)
print math.modf(-25/12)
--> (-0.08333, -2.0)

#to just print the whole number as an int:
print int(math.modf(25/12)[1])


-3 is the correct answer to the expression -25/12

Here is why.

Consider the statement print 25/12 and print 25%12 {{{>>> print 25/12 2 >>> print 25%12 1}}}

This is because 25 = 2 * 12 + 1

So print -25/12 and print -25%12 gives you {{{>>> print -25/12 -3 >>> print -25%12 11}}}

Because -25 = -3 * 12 + 11

Your suggested answer -25/12 = -2 implies that -25%12 = -1

-25 = -2 * 12 + -1

But the result of A%B must be positive so -25%12 = 11 instead of -1 thus -25/12 must be -3 instead of -2


Please see the Python Programming FAQ, [http://www.python.org/doc/faq/programming.html#why-does-22-10-return-3 question 1.3.2], for an explanation.

Asking for Help/SubtractionQuestion (last edited 2011-03-26 23:11:56 by PaulBoddie)

Unable to edit the page? See the FrontPage for instructions.