Como usar o DecimalFormat do Java para formatação de moeda "inteligente"?

Eu gostaria de usar o DecimalFormat do Java para formatar duplas da seguinte forma:

#1 - 100 -> $100
#2 - 100.5 -> $100.50
#3 - 100.41 -> $100.41

O melhor que posso apresentar até agora é:

new DecimalFormat("'

Mas isso não funciona no caso 2 e gera "$ 100,5"

Editar:

Muitas dessas respostas estão apenas considerando os casos 2 e 3 e não percebendo que sua solução fará com que o número 1 formate 100 como "$ 100,00" em vez de apenas "$ 100".

0.##");

Mas isso não funciona no caso 2 e gera "$ 100,5"

Editar:

Muitas dessas respostas estão apenas considerando os casos 2 e 3 e não percebendo que sua solução fará com que o número 1 formate 100 como "$ 100,00" em vez de apenas "$ 100".

questionAnswers(9)

yourAnswerToTheQuestion