Pour autant que je sais valeurs à virgule flottante sont de la forme n * 2^e, avecOù le standard C++ définit-il la plage de valeurs des types float?
- être Plage de flotteur n = - (2^23-1) - (2^23-1), et e = -126 à 127,
- étant le double de la plage n = - (2^52-1) - (2^52-1), et e = -1 022 - 1023
Je regardais par la C++ standard, mais n'a pas réussi à trouver l'endroit où la norme le spécifie, ou impose l'association des types double flottant, double et long avec des plages définies dans d'autres normes (IEEE). La seule chose que j'ai trouvée en 3.9.1.8 est:
Il existe trois types de virgule flottante: float, double et long double. Le type double fournit au moins autant de précision que float, et le type long double fournit au moins autant de précision que le double. L'ensemble des valeurs du type float est un sous-ensemble de l'ensemble des valeurs du type double; l'ensemble des valeurs du type double est un sous-ensemble de l'ensemble des valeurs du type long double. La représentation de la valeur des types à virgule flottante est définie par l'implémentation.
Et aucune mention de la plage minimale fournie par le type. Où/comment la norme spécifie-t-elle la plage de valeurs (minimum?) Des types à virgule flottante? Ou un compilateur peut-il choisir librement n'importe quelle plage de valeurs et être toujours conforme aux normes?
https://docs.microsoft.com/en-us/cpp/c-language/type-float https://docs.microsoft.com/en-us/cpp/c-language/type-double – Andrew