Maison  >  Article  >  développement back-end  >  Que signifie la virgule flottante php ?

Que signifie la virgule flottante php ?

藏色散人
藏色散人original
2022-01-19 09:25:137145parcourir

La virgule flottante PHP fait référence au type à virgule flottante Float, également appelé nombre à virgule flottante, nombre double précision ou nombre réel réel. Sa syntaxe de définition est telle que "$a = 1.234; $b = 1.2e3;"; longueur de mot du nombre à virgule flottante Dépend de la plate-forme, bien que la valeur maximale soit généralement de 1,8e308 avec une précision de 14 chiffres décimaux.

Que signifie la virgule flottante php ?

L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur DELL G3

Que signifie la virgule flottante php ?

Float Type à virgule flottante

Le type à virgule flottante (également appelé nombre à virgule flottante float, nombre double précision double ou nombre réel réel) peut être défini avec l'une des syntaxes suivantes :

<?php
$a = 1.234; 
$b = 1.2e3; 
$c = 7E-10;
$d = 1_234.567; // 从 PHP 7.4.0 开始支持
?>

Représenté sous la forme de flottant nombre à points (les traits de soulignement PHP 7.4.0 n'étaient pas pris en charge auparavant) :

LNUM          [0-9]+(_[0-9]+)*
DNUM          ([0-9]*(_[0-9]+)*[\.]{LNUM}) | ({LNUM}[\.][0-9]*(_[0-9]+)*)
EXPONENT_DNUM (({LNUM} | {DNUM}) [eE][+-]? {LNUM})

La longueur des mots des nombres à virgule flottante dépend de la plate-forme, bien que la valeur maximale soit généralement de 1,8e308 avec une précision de 14 chiffres décimaux (format IEEE 64 bits ).

Précision des nombres à virgule flottante

Les nombres à virgule flottante ont une précision limitée. Bien que cela dépende du système, PHP utilise généralement le double format IEEE 754, donc l'erreur relative maximale due à l'arrondi est de 1.11e-16. Les opérations mathématiques non fondamentales peuvent donner lieu à des erreurs plus importantes, et la propagation des erreurs lors de l'exécution d'opérations composées doit être prise en compte.

De plus, les nombres rationnels tels que 0,1 ou 0,7 qui peuvent être représentés avec précision en décimal, quel que soit le nombre de mantisses, ne peuvent pas être représentés avec précision par le binaire utilisé en interne, et ne peuvent donc pas être convertis au format binaire sans perdre un peu un peu de précision. Cela peut conduire à des résultats confus : par exemple, floor((0.1+0.7)*10) renverra généralement 7 au lieu du 8 attendu, car la représentation interne du résultat est en fait quelque chose comme 7.999999999999999991118... .

Ne croyez donc jamais que le résultat du nombre à virgule flottante est précis jusqu'au dernier chiffre, et ne comparez jamais si deux nombres à virgule flottante sont égaux. Si vous avez vraiment besoin d'une plus grande précision, vous devez utiliser des fonctions mathématiques de précision arbitraire ou la fonction gmp.

Apprentissage recommandé : "Tutoriel vidéo PHP"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn