Можете ли вы в Python воспользоваться всеми преимуществами длинного десятичного знака, отображая при этом только два знаPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Можете ли вы в Python воспользоваться всеми преимуществами длинного десятичного знака, отображая при этом только два зна

Сообщение Anonymous »

У меня есть пара коробок. Один из них касается рабочего времени. Другой — за трудовые доллары. Когда вы вводите сумму трудо-часов, она автоматически рассчитывает и заполняет поле в долларах США. Когда вы вводите сумму в долларах США, она автоматически рассчитывает и заполняет поле «Часы работы». Все работает как хотелось. Я использую переменную.get() в функции для извлечения данных из полей ввода по мере ввода чисел, а затем обновляю математические данные для каждого нажатия клавиши.
Проблема Я сталкиваюсь с тем, что, когда стоимость рабочей силы равна длинному десятичному знаку, расчеты немного искажаются. В конечном итоге происходит то, что при ставке труда 70,00 в час, если я ввожу сумму в долларах труда, например, 127,00, она автоматически заполняет/отображает 1,81 часа труда, а это именно то, что я хочу. Но 1,81 часа труда при 70,00 в час получается 126,70, потому что 127,00, разделенное на 70,00 в час, составляет 1,814285714285714 часов труда, а не 1,81.
В результате получается привязка, которая выполняется просто если отпустить кнопку вкладки, вложенная рабочая сила изменится со 127,00 на 126,70. Чтобы числа оставались прежними, мне нужно, чтобы он мог рассчитывать в соответствии с полным десятичным числом 1,814285714285714 * 70,00, но для эстетических целей я хочу, чтобы он отображал только первые два десятичных числа. мест.
Я не знаю, с чего начать, чтобы иметь возможность вычислять полное число, отображая усеченное версию.
При необходимости я могу предложить код, который использую, но думаю, что вопрос довольно простой. Если кто-нибудь может предложить конструктивное руководство, мы будем признательны.
Изменить: добавлен код
IE = {}
for i in range(117):
IE = None

def lh_1(event):
lha = lhbox1.get()
if lha.replace('.','',1).isnumeric() == True:
IE[7] = float(lhbox1.get())
IE[8] = float(IE[7])*float(ratesbox1.get())
lbox1.delete(0, tkinter.END)
lbox1.insert(0, "${:.2f}".format(float(IE[8])))
print(IE[7])
print(IE[8])
elif lhbox1.get() == ".":
IE[7] = lhbox1.get()
lbox1.delete(0, tkinter.END)
elif lhbox1.get() == "":
lhbox1.delete(0, tkinter.END)
IE[7] = None
lbox1.delete(0, tkinter.END)
else:
lhbox1.delete(0, tkinter.END)
lhbox1.insert(0, IE[7])
def lh_1_enter(event):
if IE[7] != None:
lhbox1.delete(0, tkinter.END)
lhbox1.insert(0, "{:.2f}".format(float(IE[7])))
def lh_1_leave(event):
if IE[7] != None:
lhbox1.delete(0, tkinter.END)
lhbox1.insert(0, "{:.2f}".format(float(IE[7])))

lhfrm1 = tkinter.Frame(master=wofrm, bg="#b2b4b7", width=48, height=25, borderwidth=2, relief=tkinter.SUNKEN)
lhfrm1.place(x=902, y=110)
lhbox1 = tkinter.Entry(master=wofrm, bg="#b2b4b7", fg="#000000", width=6, borderwidth=0, relief=tkinter.FLAT)
lhbox1.place(x=908, y=114)
WOBOXES.append(lhbox1)
lhbox1.bind("", lh_1)
lhbox1.bind("", lh_1_enter)
lhbox1.bind("", lh_1_leave)

def l_1(event):
la = lbox1.get()
if la.replace('.','',1).isnumeric() == True:
IE[8] = float(lbox1.get())
IE[7] = float(IE[8])/float(ratesbox1.get())
lhbox1.delete(0, tkinter.END)
lhbox1.insert(0, "{:.2f}".format(IE[7]))
print(IE[8])
print(IE[7])
elif lbox1.get() == ".":
IE[8] = lbox1.get()
lhbox1.delete(0, tkinter.END)
elif lbox1.get() == "":
lbox1.delete(0, tkinter.END)
IE[8] = None
lhbox1.delete(0, tkinter.END)
else:
lbox1.delete(0, tkinter.END)
lbox1.insert(0, "{:.2f}".format(float(IE[8])))
def l_1_enter(event):
if IE[8] != None:
lbox1.delete(0, tkinter.END)
lbox1.insert(0, "{:.2f}".format(float(IE[8])))
def l_1_leave(event):
if IE[8] != None:
lbox1.delete(0, tkinter.END)
lbox1.insert(0, "${:.2f}".format(float(IE[8])))

lfrm1 = tkinter.Frame(master=wofrm, bg="#b2b4b7", width=70, height=25, borderwidth=2, relief=tkinter.SUNKEN)
lfrm1.place(x=952, y=110)
lbox1 = tkinter.Entry(master=wofrm, bg="#b2b4b7", fg="#000000", width=10, borderwidth=0, relief=tkinter.FLAT)
lbox1.place(x=958, y=114)
WOBOXES.append(lbox1)
lbox1.bind("", l_1)
lbox1.bind("", l_1_enter)
lbox1.bind("", l_1_leave)


Подробнее здесь: https://stackoverflow.com/questions/792 ... displaying
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»