198 votes

Pourquoi Double.MIN_VALUE n'est-il pas négatif ?

Quelqu'un peut-il m'éclairer sur la raison pour laquelle Double.MIN_VALUE n'est pas en fait la valeur minimale que les Doubles peuvent prendre ? C'est une valeur positive, et un Double peut bien sûr être négatif.

Je comprends pourquoi il s'agit d'un nombre utile, mais son nom semble très peu intuitif, surtout lorsqu'il est comparé à Integer.MIN_VALUE . En l'appelant Double.SMALLEST_POSITIVE ou MIN_INCREMENT ou similaire aurait une sémantique plus claire.

Par ailleurs, quelle est la valeur minimale que les Doubles peuvent prendre ? Est-ce que c'est -Double.MAX_VALUE ? La documentation ne semble pas le dire.

2 votes

Merci pour les réponses ! La différence entre portée et précision est logique. Je trouve toujours la dénomination assez étrange et incohérente, mais c'est faisable.

1 votes

Je suppose que c'est parce qu'il est écrit par les mêmes génies qui ont appelé une méthode writeBytes qui prend un String .

1 votes

Fondamentalement, vous avez raison, c'est une mauvaise sémantique.

1voto

prime Points 1239

Comme il est dit dans le documents ,

Double.MIN_VALUE est une constante qui contient le plus petit POSITIF valeur non nulle de type double, 2^(-1074).

L'astuce ici est que nous parlons de la représentation d'un nombre à virgule flottante. Le type de données double est un nombre à virgule flottante IEEE 754 de 64 bits à double précision. Les points flottants représentent des nombres allant de 1,000,000,000,000 à 0.0000000000000001 avec facilité, et en maximisant la précision (le nombre de chiffres) aux deux extrémités de l'échelle. (Pour en savoir plus este )

El mantisse, toujours un nombre positif contient les chiffres significatifs du nombre à virgule flottante. L'exposant indique la puissance positive ou négative du radix par laquelle la mantisse et le signe doivent être multipliés. Les quatre composants sont combinés comme suit suit pour obtenir la valeur à virgule flottante.

enter image description here

Pensez que la valeur MIN_VALUE est la valeur minimale que la mantisse peut représenter. Comme la valeur minimale d'une représentation en virgule flottante est la grandeur minimale qui peut être représentée en l'utilisant. (On aurait pu utiliser un meilleur nom pour éviter cette confusion).

123 > 10 > 1 > 0.12 > 0.012 > 0.0000123 > 0.000000001 > 0.0000000000000001

La liste ci-dessous est juste pour votre information.

La virgule flottante à double précision peut représenter 2 098 puissances de deux, de 2^-1074 à 2^1023. Les puissances de deux dénormalisées sont celles comprises entre 2^-1074 et 2^-1023 ; les puissances de deux normalisées sont celles comprises entre 2^-1022 et 2^1023. Se référer à este y este .

Prograide.com

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.

Powered by:

X