Velocity Reviews > Re: Division help in python

# Re: Division help in python

Chris Angelico
Guest
Posts: n/a

 09-07-2012
On Fri, Sep 7, 2012 at 10:53 PM, Ramyasri Dodla <(E-Mail Removed)> wrote:
> I am brand new to python. checking over basic stuff. I came across the
> problem while doing so. If any body aware of the problem, kindly respond me.
>
>>>> 5/10

> 0
>>>> - 5/10

> -1
>
> The second case also should yield a 'zero' but it is giving a -1

You're clearly using Python 2, because in Python 3, the / operator
will return a float instead (so these would return 0.5 and -0.5
respectively). But it's helpful to mention what Python version you're
using when you ask for help

The reason for this is that / (or in Python 3, //) rounds toward
negative infinity, not toward zero. This allows the modulo operator
(%) to return a positive number, while still maintaining the normal
expectation that:

(x//y)*y + (x%y) == x

for any two integers x and y.

Hope that helps!

ChrisA

garabik-news-2005-05@kassiopeia.juls.savba.sk
Guest
Posts: n/a

 09-08-2012
Chris Angelico <(E-Mail Removed)> wrote:
> On Fri, Sep 7, 2012 at 10:53 PM, Ramyasri Dodla <(E-Mail Removed)> wrote:
>> I am brand new to python. checking over basic stuff. I came across the
>> problem while doing so. If any body aware of the problem, kindly respond me.
>>
>>>>> 5/10

>> 0
>>>>> - 5/10

>> -1
>>
>> The second case also should yield a 'zero' but it is giving a -1

>
>

....

> The reason for this is that / (or in Python 3, //) rounds toward
> negative infinity, not toward zero. This allows the modulo operator

I think he means the non-obvious unary minus precedence.

--
-----------------------------------------------------------
| __..--^^^--..__ garabik @ kassiopeia.juls.savba.sk |
-----------------------------------------------------------
Antivirus alert: file .signature infected by signature virus.
Hi! I'm a signature virus! Copy me into your signature file to help me spread!

Hans Mulder
Guest
Posts: n/a

 09-08-2012
On 8/09/12 09:03:12, http://www.velocityreviews.com/forums/(E-Mail Removed) wrote:
> Chris Angelico <(E-Mail Removed)> wrote:
>> On Fri, Sep 7, 2012 at 10:53 PM, Ramyasri Dodla <(E-Mail Removed)> wrote:
>>> I am brand new to python. checking over basic stuff. I came across the
>>> problem while doing so. If any body aware of the problem, kindly respond me.
>>>
>>>>>> 5/10
>>> 0
>>>>>> - 5/10
>>> -1
>>>
>>> The second case also should yield a 'zero' but it is giving a -1

>>

> ...
>
>> The reason for this is that / (or in Python 3, //) rounds toward
>> negative infinity, not toward zero. This allows the modulo operator

>
> I think he means the non-obvious unary minus precedence.

That seems unlikely. Unary minus has lower precedence in
Python than in most other programming languages, but its
precedence is higher than division, so this example doesn't
show the difference.

For example, in C unary opeators have the highest precedence.
Yet -5/10 returns 0, not because of precedence, but because C
rounds towards zero.

Hope this helps,

-- HansM