Как мне заставить Python, чтобы сохранить целое из научной нотации
Я пытаюсь написать метод в Python 3.2, который шифрует фразу, а затем расшифровывает ее. Проблема в том, что числа настолько велики, что когда Python делает математику с ними, он немедленно преобразует ее в научную нотацию. Поскольку мой код требует, чтобы все числа функционировали в научной нотации, это бесполезно.
То, что у меня есть:
coded = ((eval(input(':'))+1213633288469888484)/2)+1042
В основном, я просто получаю число от пользователя и делаю некоторые вычисления.
Я пробовал format()
и еще кое-что, но я не знаю, как это сделать. не могу заставить их работать.
EDIT: я использую только четные целые числа.
2 ответа:
В python3,
'/'
делает реальное деление (например, с плавающей точкой). Чтобы получить целочисленное деление, нужно использовать//
. Другими словами100/2
дает50.0
(float), тогда как100//2
дает50
(integer)Ваш код, вероятно, нужно изменить следующим образом:
coded = ((eval(input(':'))+1213633288469888484)//2)+1042
В качестве предостережения тем не менее, вы, возможно, захотите рассмотреть вопрос об использовании
int
вместоeval
:coded = ((int(input(':'))+1213633288469888484)//2)+1042