-
Precision Type Numeric
Bonjour. Il y a quelque chose que je ne comprends pas du tout avec le type numeric de Firebird. Selon ce que j'en ai lu, une definition NUMERIC(4,2) devrait accepter un nombre du genre 99.77
Pour une raison qui m'échappe, en utilisant FlameRobin je peux entrer dans le champ la valeur 326.77 mais pas la valeur 327.77 Dans ce cas j'obtient un arithmetic overflow SQL error -303.
Ŕ ce que je sache 326.77 est du type NUMERIC(5,2) Comment fonctionne vraiment le NUMERIC? Pourquoi ce comportement? Comment ce fait-il que je puisse inscrire la valeur 326.77 dans un NUMERIC(4,2)?
Merci de votre aide.
-
En fait Firebird stock les valeurs de type Numeric en interne comme des entiers, comme un SMALLINT pour une précision de 1 a 4, un INTEGER pour une précision de 5 a 9 et un BIGINT pour une précision de 10 a 18.
Donc pour un type Numeric (4,2), en interne Firebird stock cette valeur comme un SMALLINT dont les limites sont entre -32 768 et +32 767; ce qui nous donne un numeric dans les limites sont dans la fourchette : -327.68 et +327.67.