Форум сайта python.su
![[RSS Feed] [RSS Feed]](/static/djangobb_forum/img/feed-icon-small.png) 
			 
							 0
  0   
								
								Собсно, задача такая: есть некоторая таблица про деньги, которая подразумевает, что перед запятой показываются рубли, а после запятой - копейки. 
При суммах с “некруглыми копейками” отлично работает round(x, 2) - выводится эн рублей и двузначное число копеек, например, 10.99 рублей, и все счастливы.
Если же число копеек кратно десяти, то round окгугляет до ближайшего ненулевого знака, и получаются суммы типа 10.5 рублей или 10.0 рублей, от чего бухгалтерия зеленеет и перестает узнавать деньги в лицо.
Можно как-то красиво решить эту проблему? Некрасиво я уже решила, не скажу как, а то стыдно :-)
Еще бывает тоже неприятная ситуация, когда число рублей изначально целое, но при переводе в float оно обзаводится дробной частью где-то на 10-м знаке, и при округлении эта дробная часть изредка переезжает на видное место, вот как-то так: 10 —> 10.000000001 —> 10.01. Такое вылезло пару раз, сейчас не удается повторить. Но на всякий случай было бы здорово знать, как можно таких вещей гарантированно избежать.
Спасибо заранее!
Офлайн
 
							 0
  0   
								
								>>> print '%.02f' % 1.5
1.50
Офлайн
 
							 0
  0   
								
								Спасибо! То, что нужно!
Офлайн
 
							 72
  72   
								
								hildi
Еще бывает тоже неприятная ситуация, когда число рублей изначально целое, но при переводе в float оно обзаводится дробной частью где-то на 10-м знаке, и при округлении эта дробная часть изредка переезжает на видное место, вот как-то так: 10 —> 10.000000001 —> 10.01. Такое вылезло пару раз, сейчас не удается повторить. Но на всякий случай было бы здорово знать, как можно таких вещей гарантированно избежать.
import decimal
Офлайн
 
							 0
  0   
								
								PooH
Спасибо! Ушла курить мануал про decimal и re :-)
Офлайн
 
							 0
  0   
								
								PooH
и с чем это связано????????????????????
пипец……
и в питоне начинаются сишные пляски с бубном?
Офлайн
 
							 0
  0   
								
								beliy_shumс тем, что десятичное(decimal) число является вещественным(float), но вещественное число не постулируется как десятичное. Учите матчасть.
PooH
и с чем это связано????????????????????
Офлайн
 
							 72
  72   
								
								beliy_shumЭто связано с двумя формами представления вещественных чисел в компьюторах: с плавающей запятой и с фиксированной
PooH
и с чем это связано????????????????????
beliy_shumА вы как хотели? Вы не заметили что программистов готовят в высших учебных заведениях?
пипец……
и в питоне начинаются сишные пляски с бубном?
Офлайн
![[RSS Feed] [RSS Feed]](/static/djangobb_forum/img/feed-icon-small.png)