long double vs double
Je sais que la taille de différents types de données peuvent changer en fonction du système, je suis sur.
J'utilise XP 32bits, et en utilisant le sizeof() opérateur en C++, il semble que long double est de 12 octets, et le double est 8.
Cependant, la plupart des grandes sources déclare que les long double est de 8 octets, et la gamme est donc le même que d'un lit double.
Comment se fait-j'ai 12 octets? Si long double est en effet de 12 octets, n'est-ce pas cela étend la gamme de valeur? Ou le long de la signature n'est utilisé (le compilateur chiffres) lorsque la valeur dépasse la portée d'un double, et donc, s'étend au-delà de 8 octets?
Merci.
- C'est le pire aspect en ISO C. je vous déconseillons fortement de l'utiliser. Il ne conduit qu'à des problèmes parce que la spécification est tellement lâche.
Vous devez vous connecter pour publier un commentaire.
Citant Wikipédia:
et
En d'autres termes, oui, un
long double
peut être en mesure de stocker une plus grande gamme de valeurs qu'undouble
. Mais c'est le compilateur.long double
est de 128 bits: developer.apple.com/library/archive/documentation/Darwin/...Pour les compilateurs modernes sur x64, Clang et GCC utilise de 16 octets double pour
long double
alors que VC++ utilise 8 octets double. En d'autres termes, avec Clang et GCC, vous obtenez plus de précision en double mais pour VC++long double
est la même quedouble
. Le moderne x86 Processeurs ne l'appui de ces 16 octets double donc je pense que Clang et GCC sont en train de faire la bonne chose et permet d'accéder au niveau inférieur du matériel de la capacité à l'aide de langage de plus haut niveau primitives.La norme octet tailles pour les nombres sont le minimum garanti tailles à travers toutes les plateformes. Ils peuvent être de plus grande taille sur certains systèmes, mais ils ne seront jamais plus petit.
En ce qui concerne ma programmation expérience de débutant invites:
Utiliser périodiquement normalisé float [-1.0,+1.0]
Tenir normalisation de la valeur séparément avec double ou long double
Normalisation introduit du bruit=petites erreurs=hautes fréquences à
valeurs de variables
De temps à autre, il est utile de normaliser avec une valeur médiane de tenir
séparément et de conserver les données triées (données d'origine ne pourrait être sauvé
en tant que vecteur de permutation)