J'ai lu les documents: https://cloud.google.com/bigquery/docs/reference/standard-sql/data-typeshttps://cloud.google.com/bigquery/Price # Données
Je sais que FLOAT
est 8 octets tandis que NUMERIC
est 16 octets est que la seule différence? Les docs dit que NUMERIC
peut gamme -99999999999999999999999999999.999999999
à 99999999999999999999999999999.999999999
Mais cela ne spécifie pas la plage de FLOAT
.
Il y a plusieurs différences:
Plage: FLOAT
peut être aussi gros que ± 2 ^ 1023 (bien qu'il ne puisse pas représenter tous les entiers dans cette plage)
Précision près de zéro: proche zéro, FLOAT
peut être aussi précis que 2 ^ -1022.
NAN/INF: FLOAT
a "non un nombre" et des valeurs "infinies" positives et négatives, tandis que NUMERIC
ne le fait pas.
Taille de stockage: chacun NUMERIC
nécessite un stockage de 16 octets, mais FLOAT
ne nécessite que 8 octets.
Nature imprévisible: comme Ajay allion à, le grand inconvénient de FLOAT
est que les chiffres qu'il peut représenter avec précision ne correspondent pas vraiment au nombre de personnes que nous intéressons généralement. En conséquence, le point flottant devrait être utilisé pour des quantités physiques lorsque certaines erreurs sont acceptables. Si vous avez besoin de résultats prévisibles et prévisibles humains, tels que dans des calculs financiers, utilisez NUMERIC
La principale différence est les floats/les doubles sont des types de points flottants binaires et un chiffre stockera la valeur sous forme de type de point décimal flottant. Donc, le chiffre a une précision beaucoup plus élevée et sont généralement utilisés dans les applications monétaires (financières) nécessitant un degré élevé de précision. Mais dans la performance, le chiffre sage est plus lent que les types de double et float.numeric peut représenter à 100% de tout nombre dans la précision du format décimal, alors que le flotteur et le double, ne peuvent pas représenter avec précision tous les numéros, même les nombres situés à la précision des formats respectifs.