Convertir float double

Je suis en train de convertir Single à Double tout en maintenant la valeur d'origine. J'ai trouvé la méthode suivante:

Single f = 5.2F;
Double d1 = f; //5.19999980926514
Double d2 = Double.Parse(f.ToString()); //5.2 (correct)

Cette pratique est recommandable? Je n'ai pas besoin d'une méthode optimale, mais la valeur doit être transmis à la double. Sont là, même les conséquences pour le stockage d'une valeur arrondie dans un double?

  • Pas tous les nombres à virgule flottante représentant exactement, c'est pourquoi 5.2 devient 5.19999980926514.
  • À partir d'un point de vue binaire, il est. 5.2 ne peut pas être représenté exactement comme un binaire à virgule flottante nombre, il vous donne la valeur la plus proche possible.
  • Je comprends, mais ce n'est pas une chaîne de conversion d'un geste audacieux? Est-il inévitable?
  • Que faites-vous de ces chiffres? Oui, la conversion d'un seul à une chaîne de caractères et l'analyse d'un double n'est probablement pas la meilleure approche.
  • Je ne suis pas les utiliser pour des opérations, je suis à leur stockage. Le conteneur objets ne supporte pas l' System.Single donc, je dois les convertir.
  • Êtes-vous sûr que le ToString() n'est pas n'importe quel arrondissement?
  • est la 5.2 codé en dur ou le résultat d'un calcul? Si ce dernier peut vous faire le calcul avec des doubles pour obtenir une plus grande précision?
  • De préférence, codée en dur, mais je ne peut pas prendre en charge. Virgule flottante est la logique de mon absolu vice; ce que j'ai vraiment besoin de savoir est; comment faire pour convertir Single à Double tout en maintenant la représentabilité dans le cas où la valeur est en fait codé en dur, ainsi que les valeurs sont sérialisés à un certain point. Je crois comprendre que direct Single à Double la conversion n'est pas dangereux, mais c'est une question de présentation.
  • Alors, comment pensez-vous de préférence souhaitez afficher les autres à long décimales? Si Pi ont été envoyés sur par exemple? Peut-être qu'à stocker une Chaîne de caractères.Le Format et le point fixe de la valeur peut-être? #.## donc, vous auriez 3.14 pour Pi et 5.2...
  • Les valeurs ne sont pas la mienne, je ne peux pas justifier un ajustement supplémentaire au-delà de aller-retour pour assurer le succès de la désérialisation.
  • Bon, alors je collerais avec xanatos mentionner qu'ils sont vraiment le même numéro, juste avec différents précision représentés.

InformationsquelleAutor toplel32 | 2015-04-07