2016-04-28 2 views
0

Когда я делаю это вычисление 2*(5+5/(3+3))*3 Я получаю 30 в Python (2.7). Но то, что кажется, что 2*(5+5/(3+3))*3 равно 35. Может ли кто-нибудь сказать мне, почему питон дает мне ответ 30 вместо 35? Я тестировал с помощью JavaScript, Lua и Mac Calculator, и они показывают мне 35.Арифметика нарушена в Python?

Почему Python неправильно вычисляет?

http://ideone.com/yiFJxS

+0

Интересно, что Python 3 дает 35 ... – usr2564301

+1

'/' всегда целочисленное деление на Python 2. –

+2

Это потому, что '5/6' дает 0 в Python 2 и все остальные оценивают его как десятичное выход – Kamehameha

ответ

6

Это происходит из-за куска 5/(3 + 3), который имеет значение evalautes to 0. Вам нужно использовать любой из них как float ,

-2

Всегда предположить, что это проблема с чем-то, что вы делаете, а не со всем языком кодирования!

Он отлично работает для меня в оболочке Python. 35 - это ожидаемый ответ, а 35 - это то, что мы получаем! Скорее всего, что-то на вашем конце или неправильный тип/вы пропустили - прокомментировали что-то. Это от копирования, вставляющего ваш код выше.

Редактировать: Кто, скорее всего, ошибается, человек? Или массы? Бритва Оккама. В этом случае я предположил, что он использовал 3, а не 2.7, что привело к правильному предположению, поскольку оно работает в 3.

+0

Если вы всегда предполагаете, что есть проблема с самим собой, вы никогда не найдете ошибок на этом языке. – erip

Смежные вопросы