En vérifiant la nouvelle structure de la base de données, j'ai vu que quelqu'un avait changé un champ de float en double. Je me demande pourquoi, j'ai vérifié la documentation mysql, mais honnêtement, je n'ai pas compris quelle était la différence.
Quelqu'un peut-il expliquer?
Réponses:
Ils représentent tous deux des nombres à virgule flottante. A
FLOAT
est pour la simple précision, tandis que aDOUBLE
est pour les nombres à double précision.MySQL utilise quatre octets pour les valeurs en simple précision et huit octets pour les valeurs en double précision.
Il existe une grande différence entre les nombres à virgule flottante et les nombres décimaux (numériques), que vous pouvez utiliser avec le
DECIMAL
type de données. Ceci est utilisé pour stocker des valeurs de données numériques exactes, contrairement aux nombres à virgule flottante, où il est important de préserver la précision exacte, par exemple avec des données monétaires.la source
Peut-être que cet exemple pourrait expliquer.
Nous avons une table comme celle-ci:
Pour la première différence, nous essayons d'insérer un enregistrement avec '1,2' dans chaque champ:
Le tableau montrant comme ceci:
Regarde la différence?
Nous essayons de l'exemple suivant:
Hola! Nous pouvons trouver la différence comme ceci:
la source
float(10, 2)
Les doubles sont comme des flotteurs, à l'exception du fait qu'ils sont deux fois plus grands. Cela permet une plus grande précision.
la source
Je pensais que voudrais ajouter mon propre exemple qui m'a aidé à voir la différence en utilisant la valeur
1.3
lors de l' ajout ou la multiplication avec un autrefloat
,decimal
etdouble
.1.3
flotteur AJOUTÉ à1.3
de différents types:1.3
float MULTIPLIED par1.3
de différents types:Ceci utilise MySQL 6.7
Requete:
Créer un tableau et insérer des données:
la source
FLOAT stocke les nombres à virgule flottante avec une précision jusqu'à huit places et a quatre octets tandis que DOUBLE stocke les nombres à virgule flottante avec une précision jusqu'à 18 places et a huit octets.
la source
Float a 32 bits (4 octets) avec une précision de 8 places. Double a 64 bits (8 octets) avec une précision de 16 places.
Si vous avez besoin d'une meilleure précision, utilisez Double au lieu de Float .
la source