Уведомления

Группа в Telegram: @pythonsu

#1 Март 23, 2009 13:14:43

hildi
От:
Зарегистрирован: 2008-10-07
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Окгуглить до двух нулей после запятой. Как?

Собсно, задача такая: есть некоторая таблица про деньги, которая подразумевает, что перед запятой показываются рубли, а после запятой - копейки.

При суммах с “некруглыми копейками” отлично работает round(x, 2) - выводится эн рублей и двузначное число копеек, например, 10.99 рублей, и все счастливы.
Если же число копеек кратно десяти, то round окгугляет до ближайшего ненулевого знака, и получаются суммы типа 10.5 рублей или 10.0 рублей, от чего бухгалтерия зеленеет и перестает узнавать деньги в лицо.
Можно как-то красиво решить эту проблему? Некрасиво я уже решила, не скажу как, а то стыдно :-)

Еще бывает тоже неприятная ситуация, когда число рублей изначально целое, но при переводе в float оно обзаводится дробной частью где-то на 10-м знаке, и при округлении эта дробная часть изредка переезжает на видное место, вот как-то так: 10 —> 10.000000001 —> 10.01. Такое вылезло пару раз, сейчас не удается повторить. Но на всякий случай было бы здорово знать, как можно таких вещей гарантированно избежать.

Спасибо заранее!



Офлайн

#2 Март 23, 2009 13:34:17

Positive
От:
Зарегистрирован: 2008-12-04
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Окгуглить до двух нулей после запятой. Как?

>>> print '%.02f' % 1.5
1.50



Офлайн

#3 Март 23, 2009 13:50:07

hildi
От:
Зарегистрирован: 2008-10-07
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Окгуглить до двух нулей после запятой. Как?

Спасибо! То, что нужно!



Офлайн

#4 Март 23, 2009 14:15:09

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Окгуглить до двух нулей после запятой. Как?

hildi
Еще бывает тоже неприятная ситуация, когда число рублей изначально целое, но при переводе в float оно обзаводится дробной частью где-то на 10-м знаке, и при округлении эта дробная часть изредка переезжает на видное место, вот как-то так: 10 —> 10.000000001 —> 10.01. Такое вылезло пару раз, сейчас не удается повторить. Но на всякий случай было бы здорово знать, как можно таких вещей гарантированно избежать.
import decimal
http://docs.python.org/library/decimal.html



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#5 Март 23, 2009 17:15:54

hildi
От:
Зарегистрирован: 2008-10-07
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Окгуглить до двух нулей после запятой. Как?

PooH
Спасибо! Ушла курить мануал про decimal и re :-)



Офлайн

#6 Март 25, 2009 15:38:44

beliy_shum
От:
Зарегистрирован: 2009-03-11
Сообщения: 67
Репутация: +  0  -
Профиль   Отправить e-mail  

Окгуглить до двух нулей после запятой. Как?

PooH
и с чем это связано????????????????????

пипец……
и в питоне начинаются сишные пляски с бубном?



Офлайн

#7 Март 26, 2009 03:49:01

denz
От:
Зарегистрирован: 2007-01-09
Сообщения: 117
Репутация: +  0  -
Профиль   Отправить e-mail  

Окгуглить до двух нулей после запятой. Как?

beliy_shum
PooH
и с чем это связано????????????????????
с тем, что десятичное(decimal) число является вещественным(float), но вещественное число не постулируется как десятичное. Учите матчасть.



Офлайн

#8 Март 26, 2009 05:43:17

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Окгуглить до двух нулей после запятой. Как?

beliy_shum
PooH
и с чем это связано????????????????????
Это связано с двумя формами представления вещественных чисел в компьюторах: с плавающей запятой и с фиксированной
beliy_shum
пипец……
и в питоне начинаются сишные пляски с бубном?
А вы как хотели? Вы не заметили что программистов готовят в высших учебных заведениях?
Учите матчасть, там еще больше геморроя чем видно на первый взгляд - потеря точности, накопление погрешностей, неравномерное распределение чисел на прямой



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version