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