Найти - Пользователи
Полная версия: qrcode
Начало » Python для новичков » qrcode
1 2
tamazav
xam1816
покажи строку
ST00012|Name=ООО “Вася”|PersonalAcc=40702810230000012345|BankName= ПАО СБЕРБАНК|BIC=040812345|CorrespAcc=30101810100000000123|PayeeINN=1234567891|LastName='+str(self.wsh_otkuda_sch.cell(row=i, column=4).value)+'|Purpose= Оплата по договору № ‘ + ’{:06}'.format(int(self.wsh_otkuda_sch.cell(row=i, column=2).value))+' ‘+ str(self.wsh_otkuda_sch.cell(row=i, column=4).value)+’|Sum=' + str(self.raschet*100)
где self.raschet - float, получаемый сложением нескольких данных
xam1816
tamazav
где self.raschet - float, получаемый сложением нескольких данных
вопрос, а сумма обязательно в рублях делать, или можно ее передавать в копейках?. Т.е передать целым числом но выраженную в копейках?
tamazav
xam1816
вопрос, а сумма обязательно в рублях делать, или можно ее передавать в копейках?. Т.е передать целым числом но выраженную в копейках?
Расчет делается из имеющихся данных в рублях. Полученный результат передаю для формирования qr-кода с умножением на 100 для получения копеек.
Для qr-кода передаются данные в копейках, поэтому рубли умножаю на 100
tamazav
tamazav
xam1816
Наконец-то, я дурачок понял что ты спрашивал. Я его победил.
Сумма получалось множеством расчетов. Перевел несколько раз в требуемый формат (float умножил на 100, полученный результат в int, чтобы 0 убрать в конце, а int в str и подставил в строку для qr-кода.
Может есть вариант попроще, но задача решена.
Огромное спасибо всем за помощь и особая благодарность xam1816 за то, что навел на мысль
py.user.next
tamazav
Сумма получалось множеством расчетов. Перевел несколько раз в требуемый формат (float умножил на 100, полученный результат в int, чтобы 0 убрать в конце, а int в str и подставил в строку для qr-кода.
Там ещё бывает округление по десятым долям копеек. Так что ты разберись с этим, а то будешь потом неправильно вычислять суммы в некоторых случаях и даже знать об этом не будешь.

Чтобы округлить копейки по десятым долям, умножай на 1000, округляй, отбрасывай дробную часть, потом дели на тысячу обратно.
  
>>> f = 123.5789
>>> 
>>> f
123.5789
>>> 
>>> newf = int(round(f * 1000)) / 1000
>>> 
>>> newf
123.579
>>>

tamazav
xam1816
покажи строку
ST00012 …
Строку создавай без плюсов (конкатенации), только через .format(). Значения, которые подаёшь в .format(), вычисляй заранее, раскладывай по переменным. Не надо экономить строки. Это не делает код умнее, это делает код только запутаннее, и в запутанном коде потом сложно увидеть ошибку какую-то тупую вроде этой.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB