¿Cómo usar el DecimalFormat de Java para el formato de moneda "inteligente"?

Me gustaría usar DecimalFormat de Java para formatear dobles de la siguiente manera:

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

Lo mejor que puedo encontrar hasta ahora es:

new DecimalFormat("'

Pero esto no funciona para el caso # 2, y en su lugar genera "$ 100.5"

Editar

Muchas de estas respuestas solo consideran los casos # 2 y # 3 y no se dan cuenta de que su solución hará que # 1 formatee 100 como "$ 100.00" en lugar de solo "$ 100".

0.##");

Pero esto no funciona para el caso # 2, y en su lugar genera "$ 100.5"

Editar

Muchas de estas respuestas solo consideran los casos # 2 y # 3 y no se dan cuenta de que su solución hará que # 1 formatee 100 como "$ 100.00" en lugar de solo "$ 100".

Respuestas a la pregunta(9)

Su respuesta a la pregunta