Zielony Smok - logo witryny

Apache Derby: funkcja ATAN2

Opis

Zwraca liczbę DOUBLE będącą kątem (podanym w radianach) dla tangensa kąta, podanego jako boki trójkąta.

Składnia

ATAN2(bok1, bok2)

Ograniczenia

  • ‘bok1/bok2’ musi być DOUBLE
  • Jeśli ‘bok1/bok2’ jest NULL – wynik jest NULL
  • Jeśli ‘bok1’ = 0, a ‘bok2’ > 0 – wynik jest 0
  • Jeśli ‘bok1’ = 0, a ‘bok2’ < 0 – wynik jest wartością najbliższą π
  • Jeśli ‘bok1’ >, a bok ‘bok2’ = 0 – wynik jest wartością najbliższą π/2
  • Jeśli ‘bok1’ <, a ‘bok2’ = 0 – wynik jest wartością najbliższą do -π/2
Przykład w klasie R076_ATAN:
package aderby.functions.math.ciclo;

import aderby.DerbyUtil;

import java.io.*;
import java.sql.*;

public class R076_ATAN2 {
    private static final String baza = "C:/Przyklady/r076_atan";
    private static final String skrypt = "aderby/src/resources/sqls/mathdata2.sql";
    private static final String selectsql = "SELECT VAL, VAL1, ATAN2(VAL, VAL1) FROM mathdata";

    public static void main(String[] args) {
        DerbyUtil.startDerbyEngine(DerbyUtil.embdriver);
        Connection con = DerbyUtil.connectEmbeddedDB(baza, ";create=true");
        DerbyUtil.jdbcRunScript(skrypt, con);
        Statement stat = null;
        ResultSet rs = null;
        try {
            stat = con.createStatement();
            rs = stat.executeQuery(selectsql);
            while (rs.next()) {
                System.out.println(rs.getDouble(1) + "   " + rs.getDouble(2)
                        + " " + rs.getDouble(3));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        DerbyUtil.close(stat);
        DerbyUtil.close(con);
        DerbyUtil.close(rs);
        DerbyUtil.shutdownEmbeddedDB(baza);
        DerbyUtil.shutdownDerbyEngine();
        DerbyUtil.dropDatabase(new File(baza));
    }
}
Plik mathdata2.sql
CREATE TABLE mathdata(
            id INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS 
                    IDENTITY(START WITH 1, INCREMENT BY 1),
            val DOUBLE,
            val1 DOUBLE
);
CREATE INDEX i_val ON mathdata (val ASC);
INSERT INTO mathdata (id, val, val1) VALUES (DEFAULT, -37.8, 46.3);
INSERT INTO mathdata (id, val, val1) VALUES (DEFAULT, 39.7, 46.3);
INSERT INTO mathdata (id, val, val1) VALUES (DEFAULT, 36.6, 46.3);
INSERT INTO mathdata (id, val, val1) VALUES (DEFAULT, 33.2, 46.3);
INSERT INTO mathdata (id, val, val1) VALUES (DEFAULT, 39.2, 46.3);
INSERT INTO mathdata (id, val, val1) VALUES (DEFAULT, -40.6, 46.3);
INSERT INTO mathdata (id, val, val1) VALUES (DEFAULT, 41.2, 46.3);
INSERT INTO mathdata (id, val, val1) VALUES (DEFAULT, 40.1, 46.3);
INSERT INTO mathdata (id, val, val1) VALUES (DEFAULT, -39.8, 46.3);
INSERT INTO mathdata (id, val, val1) VALUES (DEFAULT, 38.9, 46.3);
INSERT INTO mathdata (id, val, val1) VALUES (DEFAULT, 38.3, 46.3);
INSERT INTO mathdata (id, val, val1) VALUES (DEFAULT, -37.9, 46.3);
INSERT INTO mathdata (id, val, val1) VALUES (DEFAULT, 37.4, 46.3);
INSERT INTO mathdata (id, val, val1) VALUES (DEFAULT, 37.1, 46.3);
INSERT INTO mathdata (id, val, val1) VALUES (DEFAULT, -36.8, 46.3);
INSERT INTO mathdata (id, val, val1) VALUES (DEFAULT, 36.7, 46.3);
INSERT INTO mathdata (id, val, val1) VALUES (DEFAULT, 36.6, 46.3);

Wynik

-37.8   46.3 -0.6846700645692975
39.7   46.3 0.7088041131359324
36.6   46.3 0.6689193620523601
33.2   46.3 0.6220858438451695
39.2   46.3 0.7025473196530082
-40.6   46.3 -0.7198993545455149
41.2   46.3 0.7271783181193474
40.1   46.3 0.713761697143522
-39.8   46.3 -0.7100474827536714
38.9   46.3 0.6987611213175511
38.3   46.3 0.6911158756761087
-37.9   46.3 -0.6859646943450358
37.4   46.3 0.679464076873722
37.1   46.3 0.6755306235545354
-36.8   46.3 -0.6715722176825671
36.7   46.3 0.6702471844736242
36.6   46.3 0.6689193620523601

Pliki do ściągnięcia

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.