Formatando números usando DecimalFormat

Eu estou tentando formatar preços usando DecimalFormat, mas isso não está funcionando para todas as variações.

DecimalFormat df = new DecimalFormat("0.##")
df.format(7.8)
df.format(85.0)

impressões

7.80

e

85

mas "7,79999" é formatado como "7,8", não "7,80". Eu tentei fazer as coisas dessa maneira

DecimalFormat df = new DecimalFormat("0.00")

para forçar dois dp, mas depois "85.0" é formatado como "85.00" e não "85"!

Existe uma maneira de capturar todas as variações, de modo que os preços sejam impressos como #, ## ou #. ##? Por exemplo:

5, 55, 5,55, 5,50, 500, 500,40

questionAnswers(5)

yourAnswerToTheQuestion