Que eu saiba, zeros à direita também são significativos (estranho mas é verdade).
Mas de qualquer maneira, se você quiser tirar os zeros à direita que sobrarem, pode tentar usar "replaceAll". Vou dar um exemplo:
import java.text.*;
import java.util.*;
class TesteZerosDireita {
public static void main(String[] args) {
double testes[] = {
1234.0,
1234.1,
1234.12,
1234.123,
1234.1234,
1234.12344321
};
DecimalFormatSymbols dfs = new DecimalFormatSymbols (new Locale ("pt", "BR"));
DecimalFormat df = new DecimalFormat ("#,##0.0000", dfs);
for (double teste : testes) {
String s = df.format (teste);
// A expressão regular abaixo tira todos os zeros à direita, mas deixa uma vírgula se for o caso.
String t = s.replaceAll ("0+$", "");
// A expressão regular abaixo tira todos os zeros à direita, e se for o caso tira também a vírgula.
String u = s.replaceAll ("(,0+|0+)$", "");
System.out.println ("[" + teste + "]->[" + s + "]->[" + t + "]->[" + u + "]");
}
}
}
Ele deve imprimir:
[1234.0]->[1.234,0000]->[1.234,]->[1.234]
[1234.1]->[1.234,1000]->[1.234,1]->[1.234,1]
[1234.12]->[1.234,1200]->[1.234,12]->[1.234,12]
[1234.123]->[1.234,1230]->[1.234,123]->[1.234,123]
[1234.1234]->[1.234,1234]->[1.234,1234]->[1.234,1234]
[1234.12344321]->[1.234,1234]->[1.234,1234]->[1.234,1234]