Aria

Apache Derby – tutorial

Apache Derby: funkcja ROUNDECIMAL (zaokrąglanie do podanej liczby miejsc)

Zadanie programistyczne

Stworzyć funkcję skalarną umożliwiającą zaokrąglenie liczby do podanej liczby miejsc po przecinku. Funkcja nie powinna dodawać zer jeśli podana liczba miejsc po przecinku jest większa od liczby miejsc po przecinku, które faktycznie ma argument.

Rozwiązanie

Napisać metodę roundToDecimal. Metoda ta została umieszczona w klasie DerbyUtil

public static double roundToDecimal(double num, int dec) {
int multi = (int)Math.pow(10, dec);
int temp = (int)Math.round(num * multi);
double temp1 = (double)temp / multi;
	return temp1;
}

Zadeklarować funkcję w bazie Derby (r088.sql):

CREATE FUNCTION ROUNDECIMAL(DATA DOUBLE, DECIMALS INTEGER)
    RETURNS DOUBLE
    PARAMETER STYLE JAVA
    NO SQL
    LANGUAGE JAVA
    EXTERNAL NAME 'aderby.DerbyUtil.roundToDecimal'
;

Napisać klasę testującą (R088_ROUNDECIMAL):

Przetestować przykład

2 37.8000502 38.0
1 39.7 40.0
3 36.6 37.0
3 33.2 33.0
2 39.2 39.0
2 40.6 41.0
2 41.2 41.0
1 40.1 40.0
1 39.8 40.0
2 38.9 39.0
1 38.3 38.0
2 37.9 38.0
2 37.4 37.0
3 37.1 37.0
3 36.8 37.0
3 36.7 37.0
1 36.6 37.0

Pliki do ściągnięcia

R088_ROUNDECIMAL.zip (klasa)

r088.zip (skrypt)

Aktualny (tworzony narastająco) plik module-info.java

Aktualny (tworzony narastająco) plik DerbyUtil.java

Pliki tworzone narastająco zastępują poprzednie pliki o tej samej nazwie i działają dla wszystkich wcześniej opublikowanych przykładów we wszystkich wpisach w projekcie. W przypadku pliku module-info.java może być potrzebne skreślenie niepotrzebnych wpisów.