Convertir float double sans perdre de précision

J'ai une primitive de flotteur et j'ai besoin aussi d'une primitive double. Tout simplement couler le flotteur à double me donne bizarre une précision supplémentaire. Par exemple:

float temp = 14009.35F;
System.out.println(Float.toString(temp)); //Prints 14009.35
System.out.println(Double.toString((double)temp)); //Prints 14009.349609375

Toutefois, si, au lieu de casting, j'ai sortie le flotteur comme une chaîne de caractères, et d'analyser la chaîne comme un double, j'obtiens ce que je veux:

System.out.println(Double.toString(Double.parseDouble(Float.toString(temp))));
//Prints 14009.35

Est-il un meilleur moyen que d'aller à la Chaîne et à l'arrière?