Dans les en-têtes stdint.h (C99), boost / cstdint.hpp et cstdint (C ++0x), il existe, entre autres, le type int32_t.
Existe-t-il des types de virgule flottante de taille fixe similaires? Quelque chose comme float32_t?
Dans les en-têtes stdint.h (C99), boost / cstdint.hpp et cstdint (C ++0x), il existe, entre autres, le type int32_t.
Existe-t-il des types de virgule flottante de taille fixe similaires? Quelque chose comme float32_t?
Rien de tel n'existe dans le C ou C++ normes à l'heure actuelle. En fait, il n'est même pas une garantie que l' float
sera un binaire à virgule flottante de format.
Certains compilateurs garantir que l' float
type sera la norme IEEE-754 32 bits format binaire. Certains ne le font pas. En réalité, float
est en fait la norme IEEE-754 single
type sur la plupart des non-incorporé des plates-formes, bien que les mises en garde habituelles sur certains compilateurs de l'évaluation des expressions dans un plus grand format de s'appliquer.
Il y a un groupe de travail chargé de discuter de l'ajout de liaisons de langage C pour la version 2008 de la norme IEEE-754, qui pourrait envisager de recommander une telle typedef être ajouté. Si on ajoute à cela à C, je m'attends à la norme C++ suivraient... éventuellement.
Si vous voulez savoir si votre float
est la norme IEEE de 32 bits type, vérifiez std::numeric_limits<float>::is_iec559
. C'est une constante de compilation, pas une fonction.
Si vous voulez être plus à l'épreuve des balles, vérifiez également std::numeric_limits<float>::digits
pour s'assurer qu'ils ne sont pas sournoisement à l'aide de la norme IEEE double précision pour l' float
. Il devrait être de 24.
Quand il s'agit de long double
, il est plus important de vérifier l' digits
parce qu'il y a un couple IEEE formats dont il peut être raisonnablement: 128 bits (chiffres = 113) ou de 80 bits (chiffres = 64).
Il ne serait pas pratique d' float32_t
en tant que tel parce que vous voulez généralement à l'utilisation de la virgule flottante, si disponible, et de ne pas retomber sur un logiciel de mise en œuvre.
Si vous pensez avoir typedefs comme float32_t et float64_t il est impossible pour une raison quelconque, vous devez être trop habitué à votre familier OS, compilateur, que vous ne parvenez pas trop regarder à l'extérieur de votre petit nid.
Il existe du matériel qui s'exécute en mode natif 32 bits à virgule flottante IEEE opérations et d'autres qui ne 64-bit. Parfois, de tels systèmes ont même de parler à tour de rôle, dans lequel cas, il est extrêmement important de savoir si un double est 32 bits ou 64 bits sur chaque plate-forme. Si la plate-forme 32 bits ont été à faire excessives sur les calculs de base sur les valeurs de 64 bits à partir de l'autre, nous pouvons avoir envie de jeter à la moindre précision selon calendrier et les exigences en matière de vitesse.
J'ai personnellement mal à l'aise à l'aide de chars et de doubles, sauf que je sais exactement combien de morceaux ils sont sur mon platfrom. Encore plus si je suis pour le transfert de ces à une autre plate-forme au-dessus de certains canaux de communication.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.