![]() |
![]() ![]() ![]() ![]() ![]() ![]() |
|
![]() ![]() ![]() ![]() ![]() |
![]() ![]() ![]() ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Numerische-Funktionen | 72 Funktionen | |
Erzeugen | 4 Funktion | |
Formatieren | 11 Funktionen | |
Berechnen | 20 Funktionen | |
Vergleichen | 4 Funktionen | |
Binär | 8 Funktionen | |
Trigonometrie | 25 Funktionen | |
![]() |
ab FireBird Version 2.1 kann diese Funktion ersetzt werden | |
Output
RETURN Mechanismus wenn nicht anderes angegeben: FREE_IT Die TestSQLs mit NULL funktionieren nur ab FireBird 2 |
Numerische-Funktionen: Formatieren | ||
![]() |
||
F_ROUND | Input/Output-kompatibel
zu FreeUDFLibC |
|
Entrypoint | f_round | |
Input | DOUBLE | auf Ganzahl zu rundende Flieskommazahl |
Output | INTEGER | auf einen ganzahligen Wert gerundete Flieskommazahl |
Es wird kaufmännisch gerundet wie bei
F_ZAHLRUNDEN. Wegen gleichlautender C-Funktion mußte der Entrypoint von round auf f_round geändert werden. Darum jetzt KEINE Entrypoint-Kopatibilität mehr zur 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 | kompatibel zu FreeUDFLib, FreeUDFLib AvERP | |
Entrypoint | roundfloat | |
Input | DOUBLE DOUBLE |
zu
rundende
Flieskommazahl Pattern, wie Flieskommazahl aussehen soll (z.B. 0.01); rundet auf das nächste Vielfache des 2. Parameters |
Output | DOUBLE | gerundete Flieskommazahl im Stil von Parameter 2 |
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 |
kompatibel
zu FreeUDFLib AvERP, GrUDF Input/Output-kompatibel zu rFunc (ROUND) |
|
![]() |
ersetzbar durch ROUND | |
Entrypoint | zahlrunden | |
Input | DOUBLE INTEGER |
zur
rundender
Wert Anzahl der Stellen, auf die kaufmännisch gerundet werden soll |
Output | DOUBLE | auf Parameter 2 -Stellen kaufmännisch gerundete Flieskommazahl |
Kaufmännisches
Runden (aus Wikipedia http://de.wikipedia.org/wiki/Runden): Ist die Ziffer an der ersten wegfallenden Dezimalstelle (im Beispiel hier unten die dritte Nachkommastelle) nicht größer als eine 4, wird abgerundet. Anderenfalls wird aufgerundet. Die folgenden Nachkommastellen werden nicht berücksichtigt. * aus 2,1349... € wird 2,13 € * aus 2,1350... € wird 2,14 € Negative Zahlen werden nach ihrem Betrag gerundet, bei einer 5 also weg von Null: * aus −2,1349... € wird −2,13 € * aus −2,1350... € wird −2,14 € 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 | Funktion von adhoc |
|
Entrypoint | roundtoeven | |
Input | DOUBLE INTEGER |
zur
rundender
Wert Anzahl der Stellen, auf die unverzerrt gerundet werden soll |
Output | DOUBLE | auf Parameter 2 -Stellen gerundete Flieskommazahl nach "Banker"-Regeln |
Unverzerrte
Rundung (aus Wikipedia http://de.wikipedia.org/wiki/Runden): Kaufmännisches und unverzerrtes Runden unterscheiden sich nur darin, wohin eine Zahl genau in der Mitte zwischen zwei Zahlen mit der gewählten Anzahl von Dezimalziffern gerundet wird. Das kaufmännische Runden erzeugt kleine statistische Fehler, da das Aufrunden um 0,5 vorkommt, das Abrunden um 0,5 jedoch nie; das kann Statistiken geringfügig verzerren. Außerdem ist das Verhalten bei positiven und negativen Zahlen unterschiedlich, wenn die zu rundende Ziffer eine 5 ist. Es gibt ein Verfahren, das diese Probleme vermeidet, die unverzerrte Rundung (englisch round to even). Es rundet von der genauen Mitte zwischen zwei Ziffern immer zur nächsten geraden Zahl auf oder ab. Ansonsten entspricht es dem kaufmännischen Verfahren: * aus 2,33 wird 2,3 * aus 2,35 wird 2,4 * aus 2,45 (exakt) wird 2,4 * aus 2,4500001 wird 2,5 * aus 2,47 wird 2,5 * aus 2,53 wird 2,5 * aus 2,55 wird 2,6 Negative Zahlen werden nach ihrem Betrag gerundet: * aus −2,35 wird −2,4 * aus −2,45 (exakt) wird −2,4 * aus −2,4500001 wird −2,5 * aus −2,46 wird −2,5 * aus −2,449 wird −2,5 Diese Art der Rundung ist bei Logarithmentafeln, im Vermessungswesen, in der Statistik und bei Banken üblich. 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 | Input/Output-kompatibel zu rfunc (SOFTROUND) | |
Entrypoint | softround | |
Input | DOUBLE INTEGER |
auf
Ganzahl zu
rundende Flieskommazahl Stelle, auf die gerundet werden soll |
Output | INTEGER | auf einen ganzahligen Wert gerundete Flieskommazahl |
Es wird kaufmännisch gerundet wie bei
F_ZAHLRUNDEN. Wenn das Ergebnis des Rundens 0 wäre, wird statt dessen der ungerundete Wert zurückgegeben. 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 | kompatibel zu FreeUDFLib, FreeUDFLibC, FreeUDFLib AvERP | |
Entrypoint | fixedpoint | |
Input | DOUBLE INTEGER |
zu
rundende
Flieskommazahl Anzahl Stellen, auf die gerundet werden soll |
Output | CSTRING(32) | Flieskommazahl gerundet auf die Anzahl der Stellen Parameter 2 |
Im
Unterschied zu F_ZAHLRUNDEN ist hier das
Ergebnis ein String! Es wird "amerikanisch" gerundet, also wie F_ROUNDTOEVEN! In der String-Ausgabe ist das Dezimal-Trennzeichen ein “.”! 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 | Funktion von adhoc |
|
Entrypoint | fixedpointlang | |
Input | DOUBLE INTEGER CSTRING(1) CSTRING(1) |
zu
rundende
Flieskommazahl Anzahl Stellen, auf die gerundet werden soll Zeichen für Dezimaltrennung Zeichen für Tausendertrennung |
Output | CSTRING(32) | Flieskommazahl auf Anzahl der Stellen von Parameter 2 mit definierbaren Dezimal- und Tausender-Trennzeichen |
Es wird kaufmännisch gerundet wie bei
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 | kompatibel zu FreeUDFLib, FreeUDFLibC, FreeUDFLib AvERP, GrUDF | |
![]() |
ersetzbar durch TRUNC | |
Entrypoint | f_truncate | |
Input | DOUBLE | abzuschneidende Flieskommazahl |
Output | INTEGER | Flieskommazahl mit abgeschnittenen Nachkommastellen |
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 |
kompatibel
zu FreeUDFLib,
FreeUDFLib AvERP kompatibel zu FreeUDFLibC |
|
Entrypoint | dollarval | |
Input | DOUBLE | Flieskommawert |
Output | CSTRING(32) | Dollar-Zahlenwert ($ vor der Zahl) (gerundet auf 2 Nachkommastellen) |
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 | Funktion von adhoc |
|
Entrypoint | euroval | |
Input | DOUBLE | Flieskommawert |
Output | CSTRING(32) | EURO-Zahlenwert (EUR nach der Zahl) (gerundet auf 2 Nachkommastellen) |
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 | Funktion von adhoc |
|
Entrypoint | numinwords | |
Input | DOUBLE | Flieskommawert |
SMALLINT | Anzahl der gewünschten Nachkommastellen (keine Rundung!) | |
CSTRING(2) | Sprachkennzeichen für die Ausgabe | |
Output | CSTRING(32) | Flieskommazahl in
Wörtern in der gewählten Sprache |
Sprachkennzeichen:
uk = englisch,
de = deutsch, fr = französich, it = italienisch, es = spanisch, pt =
portugisisch, nl = niederländisch, no = norwegisch Bokmål, se = schwedisch, dk = dänisch, fi = finnisch, hu = ungarisch, ie = irisch(es gälisch), ee = estnisch, is = isländisch, al = albanisch, va = lateinisch, v1 = kirchlisches lateinisch, c1 = katalanisch, s1 = schottisch, s2 = schottisches gälisch, w1 = walisich, b1 = bretonisch, b2 = baskisch, n1 = norwegisch Nynorsk, za = afrikaans, fo = faörisch, lu = luxembourgisch, w2 = wallonisch 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; |
||
![]() ![]() |