![]() |
![]() ![]() ![]() ![]() ![]() ![]() |
|
![]() ![]() ![]() ![]() ![]() |
![]() ![]() ![]() ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Fonctions numériques | 72 fonctions | |
Utilitaires | 4 fonctions | |
Formatages | 11 fonctions | |
Calculs | 20 fonctions | |
Comparaisons | 4 fonctions | |
Binaire | 8 fonctions | |
Trigonométrie | 25 fonctions | |
![]() |
á partir de FireBird 2.1 on peut remplacer par la fonction SQL incorporée | |
Lors du
RETURN: FREE_IT, sauf indication contraire Les TestSQL avec NULL ne sont opérationnels que sous FireBird 2.0 |
Fonctions numériques: Formatages | ||
![]() |
||
F_ROUND | Entrée/Sortie compatibles avec FreeUDFLibC | |
Entrypoint | f_round | |
Entrée | DOUBLE | Nombre en virgule flottante à convertir en valeur entière |
Sortie | INTEGER | Arrondit un nombre en virgule flottante en un nombre entier |
Méthode courante pour arrondir a F_ZAHLRUNDEN. Par suite de conflits de noms avec une fonction C, le point d’entrée (Entrypoint) a été modifié de round à f_round. Ce qui a pour effet de supprimer la compatibilité du point d’entrée avec FreeUDFLibC. TestSQL SELECT 16 AS ISCORRECT, F_ROUND(15.567) FROM RDB$DATABASE; SELECT NULL AS ISCORRECT, F_ROUND(NULL) FROM RDB$DATABASE; |
||
![]() ![]() |
||
F_ROUNDFLOAT | Compatible avec FreeUDFLib, FreeUDFLib AvERP | |
Entrypoint | roundfloat | |
Entrée | DOUBLE DOUBLE |
nombre
en virgule flottante à arrondir Modèle montarnt le format du nombre à virgule flottante (par exemple 0.01); arrondit au multiple suivant du 2e paramètre |
Sortie | DOUBLE | Arrondit un nombre en virgule flottante |
TestSQL SELECT 15.55 AS ISCORRECT, F_ROUNDFLOAT(15.567, 0.05) FROM RDB$DATABASE; SELECT 15.56 AS ISCORRECT, F_ROUNDFLOAT(15.567, 0.02) FROM RDB$DATABASE; SELECT 15.57 AS ISCORRECT, F_ROUNDFLOAT(15.567, 0.01) FROM RDB$DATABASE; SELECT NULL AS ISCORRECT, F_ROUNDFLOAT(NULL, NULL) FROM RDB$DATABASE; |
||
![]() ![]() |
||
F_ZAHLRUNDEN F_ROUNDCOMMON |
Compatible avec FreeUDFLib AvERP,
GrUDF Entrée/Sortie compatibles avec rFunc (ROUND) |
|
![]() |
remplaçable par ROUND | |
Entrypoint | zahlrunden | |
Entrée | DOUBLE INTEGER |
valeur
à arrondir Nombre de chiffres décimaux pour l’arrondi |
Sortie | DOUBLE | Arrondit le nombre à virgule flottante en fonction du nombre de chiffres décimaux spécifié au paramètre 2 |
Méthode courante pour arrondir (selon
Wikipedia http://fr.wikipedia.org/wiki/Arrondi): Cette méthode est généralement employée, par exemple en comptabilité, par les scientifiques ou en convertissant des devises. Donnons ici les étapes de cette méthode * choisir le chiffre qui sera le dernier à conserver. * augmenter ce chiffre d'une unité si le chiffre suivant vaut au moins 5 (ceci s'appelle arrondissage par excès) * le laisser identique si le chiffre suivant est strictement inférieur à 5 (cela s'appelle l'arrondissage par défaut) Exemple: 3,046 peut être arrondi aux centièmes en 3,05 (parce que le chiffre suivant (6) est supérieur à 5). Autres exemples en ne gardant qu'un seul chiffre après la virgule : * 1,349 devient 1,3 (car le chiffre suivant 3 est strictement inférieur à 5) * 1,350 devient 1,4 (car le chiffre suivant 3 vaut au moins 5) Les nombres négatifs sont traités selon leur montant: * –2,1349 devient –2,13 € * –2,1350 devient –2,14 € En fait la méthode consiste à séparer les dix chiffres décimaux ( 0, 1 ... 9 ) en deux parties : * les 5 premiers : 0, 1, 2, 3 et 4 pour lesquels on passe à la valeur inférieure * les 5 suivants : 5, 6, 7, 8 et 9 pour lesquels on passe à la valeur supérieure Cette méthode limite l'accumulation d'erreurs lors de calculs successifs. TestSQL SELECT 14.5 AS ISCORRECT, F_ZAHLRUNDEN(14.4935, 1) FROM RDB$DATABASE; SELECT 14.49 AS ISCORRECT, F_ZAHLRUNDEN(14.4935, 2) FROM RDB$DATABASE; SELECT 14.494 AS ISCORRECT, F_ZAHLRUNDEN(14.4935, 3) FROM RDB$DATABASE; SELECT -14.494 AS ISCORRECT, F_ZAHLRUNDEN(-14.4935, 3) FROM RDB$DATABASE; SELECT 14.494 AS ISCORRECT, F_ZAHLRUNDEN(14.4936, 3) FROM RDB$DATABASE; SELECT 14.4935 AS ISCORRECT, F_ZAHLRUNDEN(14.4935, 6) FROM RDB$DATABASE; SELECT NULL AS ISCORRECT, F_ZAHLRUNDEN(NULL, NULL) FROM RDB$DATABASE; |
||
![]() ![]() |
||
F_ROUNDTOEVEN | Fonction de adhoc | |
Entrypoint | roundtoeven | |
Input | DOUBLE INTEGER |
valeur
à arrondir Nombre de chiffres décimaux pour l’arrondi |
Output | DOUBLE | Arrondit le nombre à virgule flottante en fonction du nombre de chiffres décimaux spécifié au paramètre 2 |
Méthode
d'arrondissage des statisticiens (selon Wikipedia http://fr.wikipedia.org/wiki/Arrondi):
Si quatre (ou un chiffre inférieur) est le chiffre qui suit la décimale à laquelle le nombre doit être arrondi, alors la décimale reste inchangée. Alors que si le chiffre suivant la décimale est six ou plus, la décimale est augmentée d'une unité. Enfin si le chiffre suivant est le chiffre cinq lui-même suivi par des chiffres différents de zéro, alors la décimale sera augmenté d'une unité, tandis que si cinq n'est suivi d'aucun chiffre (ou que par des zéros) alors la décimale est augmentée d'une unité lorsqu'elle est impaire et reste inchangée sinon. Cette méthode est parfois appelée « arrondi au chiffre pair » et est employée afin d'éliminer le biais qui surviendrait en arrondissant à chaque fois par excès les nombres dont le dernier chiffre est cinq. Exemples: * 3,046 arrondis aux centièmes devient 3,05 (parce que le chiffre suivant (6) est supérieur à 6) * 3,043 arrondis aux centièmes devient 3,04 ( parce que le chiffre suivant (3) est inférieur à 4) * 3,045 arrondis aux centièmes devient 3,04 (parce que le dernier chiffre est 5, et le chiffre précédent (4) est pair) * 3,015 arrondis aux centièmes devient 3,02 (parce que le dernier chiffre est 5, et le chiffre précédent (1) est impair) Les nombres négatifs sont traités selon leur montant: * −2,35 devient −2,4 * −2,45 (exacte) devient −2,4 * −2,4500001 devient −2,5 * −2,46 devient −2,5 * −2,449 devient −2,5 Pour un arrondissage à l'entier le plus proche, voyez la fonction partie entière. TestSQL SELECT 3.02 AS ISCORRECT, F_ROUNDTOEVEN(3.016, 2) FROM RDB$DATABASE; SELECT 3.01 AS ISCORRECT, F_ROUNDTOEVEN(3.013, 2) FROM RDB$DATABASE; SELECT 3.02 AS ISCORRECT, F_ROUNDTOEVEN(3.015, 2) FROM RDB$DATABASE; SELECT 3.04 AS ISCORRECT, F_ROUNDTOEVEN(3.045, 2) FROM RDB$DATABASE; SELECT 3.05 AS ISCORRECT, F_ROUNDTOEVEN(3.04501, 2) FROM RDB$DATABASE; SELECT NULL AS ISCORRECT, F_ROUNDTOEVEN(NULL, NULL) FROM RDB$DATABASE; |
||
![]() ![]() |
||
F_SOFTROUND | Entrée/Sortie compatibles avec rFunc (SOFTROUND) | |
Entrypoint | softround | |
Entrée | DOUBLE INTEGER |
nombre
en virgule flottante à arrondir Nombre de chiffres décimaux pour l’arrondi |
Sortie | INTEGER | pour une valeur entière, nombre à virgule flottante arrondi |
Méthode courante pour arrondir a F_ZAHLRUNDEN. Au cas où l’arrondi donnerait 0, la valeur renvoyée est la valeur non arrondie. TestSQL SELECT 0.0016 AS ISCORRECT, F_SOFTROUND(0.0016, 2), F_ZAHLRUNDEN(0.0016, 2) FROM RDB$DATABASE; SELECT NULL AS ISCORRECT, F_SOFTROUND(NULL, NULL) FROM RDB$DATABASE; |
||
![]() ![]() |
||
F_FIXEDPOINT | Compatible avec FreeUDFLib, FreeUDFLibC, FreeUDFLib AvERP | |
Entrypoint | fixedpoint | |
Entrée | DOUBLE INTEGER |
nombre
en virgule flottante à arrondir Nombre de chiffres décimaux du nombre arrondi |
Sortie | CSTRING(32) | Arrondit un nombre en virgule flottante avec un nombre de décimales spécifiée au paramètre 2 |
Méthode
d'arrondissage des statisticiens a F_ROUNDTOEVEN. Contrairement à F_ZAHLRUNDEN le résultat est ici sous forme de chaîne! Dans la chaîne obtenue en sortie, le séparateur décimal est “.”. TestSQL SELECT '12345.5' AS ISCORRECT, F_FIXEDPOINT(12345.46, 1) FROM RDB$DATABASE; SELECT NULL AS ISCORRECT, F_FIXEDPOINT(NULL, NULL) FROM RDB$DATABASE; |
||
![]() ![]() |
||
F_FIXEDPOINTLANG | Fonction de adhoc |
|
Entrypoint | fixedpointlang | |
Entrée | DOUBLE INTEGER CSTRING(1) CSTRING(1) |
nombre
en virgule flottante à arrondir Nombre de chiffres décimaux pour arrondir Signe de séparateur décimal Signe de séparateur de milliers |
Sortie | CSTRING(32) | Arrondit le nombre en virgule flottante en tenant compte de nombre de chiffres décimaux du paramètre 2 et des séparateurs (décimal et milliers) définis en paramètres 3 et 4 |
Méthode courante pour arrondir a F_ZAHLRUNDEN. TestSQL SELECT '12.345,5' AS ISCORRECT, F_FIXEDPOINTLANG(12345.46, 1, ',', '.') FROM RDB$DATABASE; SELECT '12.345' AS ISCORRECT, F_FIXEDPOINTLANG(12345.46, 0, ',', '.') FROM RDB$DATABASE; SELECT NULL AS ISCORRECT, F_FIXEDPOINTLANG(NULL, NULL, NULL, NULL) FROM RDB$DATABASE; |
||
![]() ![]() |
||
F_TRUNCATE | Compatible avec FreeUDFLib, FreeUDFLibC, FreeUDFLib AvERP, GrUDF | |
![]() |
remplaçable par TRUNC | |
Entrypoint | f_truncate | |
Entrée | DOUBLE | nombre à virgule flottante à tronquer |
Sortie | INTEGER | Supprime la partie décimale d’un nombre à virgule flottante |
TestSQL SELECT 15 AS ISCORRECT, F_TRUNCATE(15.567) FROM RDB$DATABASE; SELECT NULL AS ISCORRECT, F_TRUNCATE(NULL) FROM RDB$DATABASE; |
||
![]() ![]() |
||
F_DOLLARVAL F_CONVERTTODOLLAR |
Compatible avec FreeUDFLib,
FreeUDFLib AvERP Compatible avec FreeUDFLibC |
|
Entrypoint | dollarval | |
Entrée | DOUBLE | Valeur en virgule flottante |
Sortie | CSTRING(32) | Convertit une valeur en virgule flottante en une valeur en dollars (arrondie à 2 décimales) |
TestSQL SELECT '$15.68' AS ISCORRECT, F_CONVERTTODOLLAR(15.678) FROM RDB$DATABASE; SELECT '$15.68' AS ISCORRECT, F_DOLLARVAL(15.678) FROM RDB$DATABASE; SELECT NULL AS ISCORRECT, F_DOLLARVAL(NULL) FROM RDB$DATABASE; |
||
![]() ![]() |
||
F_EUROVAL | Fonction de adhoc |
|
Entrypoint | euroval | |
Entrée | DOUBLE | Valeur en virgule flottante |
Sortie | CSTRING(32) | Valeur en euros (EUR à la suite du nombre) (arrondie à 2 décimales) |
SELECT
'15.47 EUR' AS ISCORRECT,
F_EUROVAL(15.47) FROM RDB$DATABASE; SELECT NULL AS ISCORRECT, F_EUROVAL(NULL) FROM RDB$DATABASE; |
||
![]() ![]() |
||
F_NUMINWORDS | Fonction de adhoc |
|
Entrypoint | numinwords | |
Input | DOUBLE | Valeur en virgule flottante |
SMALLINT | Nombre de chiffres décimaux (no arrondie) | |
CSTRING(2) | Indicatif de la langue pour le résultat | |
Output | CSTRING(32) | virgule flottante dans la langue choisie |
Indicatif
de la langue: de = allemand, uk = anglais, fr = français, es =
espagnol, it = italien TestSQL SELECT '***eins-vier-fünf***' AS ISCORRECT, F_NUMINWORDS(145, 0, 'de') FROM RDB$DATABASE; SELECT '***eins-vier-fünf-Komma-drei-zwei***' AS ISCORRECT, F_NUMINWORDS(145.32, 2, 'de') FROM RDB$DATABASE; SELECT '***eins-vier-fünf-Komma-drei-zwei-null-null***' AS ISCORRECT, F_NUMINWORDS(145.32, 4, 'de') FROM RDB$DATABASE; SELECT '***one-four-five-point-three-two***' AS ISCORRECT, F_NUMINWORDS(145.32, 2, 'uk') FROM RDB$DATABASE; SELECT '***un-quatre-cinq-virgule-trois-deux***' AS ISCORRECT, F_NUMINWORDS(145.32, 2, 'fr') FROM RDB$DATABASE; SELECT '***uno-cuatro-cinco-coma-tres-dos***' AS ISCORRECT, F_NUMINWORDS(145.32, 2, 'es') FROM RDB$DATABASE; SELECT '***uno-quattro-cinque-virgola-tre-due***' AS ISCORRECT, F_NUMINWORDS(145.32, 2, 'it') FROM RDB$DATABASE; SELECT NULL AS ISCORRECT, F_NUMINWORDS(NULL, NULL, NULL) FROM RDB$DATABASE; |
||
![]() ![]() |
![]() ![]() ![]() ![]() ![]() |