Как мне получить оператор eval для запуска чисел как чисел с плавающей запятой - PullRequest
4 голосов
/ 04 января 2012

Я создал калькулятор с графическим интерфейсом (включая снимок экрана), и при нажатии кнопки он добавляет текст в textctrl, чтобы уравнение отображалось для пользователя.когда пользователь нажимает клавишу ввода, он берет этот текст и запускает его, используя eval, затем печатает, используя SetValue, но если я запускаю проблему в texctrl, такую ​​как 5/6, она выдается как 0, как мне сделать это float

def eenter(self,e):
    a=self.box.GetValue()
    answer=eval(a)
    ans=str(answer)
    self.box.SetValue(ans)

Ответы [ 3 ]

5 голосов
/ 04 января 2012

Место вверху вашего файла:

from __future__ import division

Это переопределяет значение /, так что это всегда деление с плавающей запятой. (Целочисленное деление //.)

Подробнее о том, что это значит, см. PEP 238 .

2 голосов
/ 04 января 2012

Просто добавьте в начало вашей программы следующую строку:

from __future__ import division

Это приведет к тому, что деления будут вести себя в Python 2.x так же, как в Python 3.x: с автоматическим приведением к плавающему типу, если целочисленные операторы приведут к десятичному числу.

1 голос
/ 04 января 2012

Вы можете попробовать изменить свой ввод на это:

5/6.0

Выше будет конвертировать результат в тип с плавающей точкой

...