Avatar billede kunop Nybegynder
13. maj 2002 - 13:05 Der er 22 kommentarer og
2 løsninger

Dividere double

Mit spørgsmål går ud på hvordan man divederer to tal af datatypen double?

Jeg har hørt noget om, at man kan lave en math.divide men kan ikke finde noget om det i dokumentationen.

Har i nogen forslag?
Avatar billede lyhr007 Nybegynder
13. maj 2002 - 13:13 #1
double x = 1.1;
double y = 1.2;
double z = 0;

z = x / y;

husk at fange dividedbyzero exception.

hvis du bruger Object Double i stedet for den simple type double, så skal du have fat i value på dit object først.
Avatar billede stig3 Mester
13. maj 2002 - 13:13 #2
Avatar billede kunop Nybegynder
13. maj 2002 - 13:18 #3
Kan ikke lige få det til at virke!

Koden ser således ud:

try
{
  bygning= bygning2/bygning3;
}
catch(DividedByZeroException)
{
}
Avatar billede carstenknudsen Nybegynder
13. maj 2002 - 13:18 #4
Du skal ikke fange nogen "DivideByZero" exception
idet division med nul er veldefineret for
flydende tal sålænge tælleren ikke er nul.
Man får bare resultatet plus eller minus
uendelig og IEEE aritmetik kan sagtens
håndtere den slags. Der er ingen speciel
grund til at bruge BigDecimal klassen
med mindre du er interesseret i at vide
hvad resultatet er (med en vis usikkerhed).
Avatar billede lyhr007 Nybegynder
13. maj 2002 - 13:19 #5
der hvor du definere bygning, bygning2 og bygning3 kan du ikke også lige skrive det her.
Avatar billede carstenknudsen Nybegynder
13. maj 2002 - 13:20 #6
Der er ikke noget der hedder DividedByZeroException
så den kan du ikke fange. Hvis du laver
heltalsdivision er division med nul ikke
defineret og du kan da fange en ArithmeticException
i stedet, men da du er interesseret i flydende
tal er det ikke aktuelt.
Avatar billede lyhr007 Nybegynder
13. maj 2002 - 13:22 #7
ja det er vidst rigtigt det carstenknudsen skriver, men jeg tror din fejl ligger i at du har lavet et Object af typen Double og ikke en af den simple type double.
Avatar billede carstenknudsen Nybegynder
13. maj 2002 - 13:23 #8
double bygning2 = 1.2;
double bygning3 = 3.345;
double bygning  = bygning2 / bygning3;
Avatar billede lyhr007 Nybegynder
13. maj 2002 - 13:24 #9
carstenknudsen det var det samme jeg skrev oven for ;)
Avatar billede carstenknudsen Nybegynder
13. maj 2002 - 13:29 #10
lyhr007: ja, og så? Du skrev desværre også
nogle forkerte ting.
kunop: giv point til lyhr007 og luk
spørgsmålet.
Avatar billede kunop Nybegynder
13. maj 2002 - 13:29 #11
de bliver erklæret sådanne
ResultSet rs;
double bygning, bygning2,bygning3;

og værdien tildeles sådanne med bygning 2 og 3
while(rs.next())
{
  bygning= rs.getDouble(1);
}
Avatar billede kunop Nybegynder
13. maj 2002 - 13:31 #12
bygnig i while skal selvfølgelig være bygning2...sorry
Avatar billede lyhr007 Nybegynder
13. maj 2002 - 13:34 #13
Hvad er bygning og bygning3's værdier ?

prøv at copy/paste hele din klasse, hvis vi må de den...
Avatar billede kunop Nybegynder
13. maj 2002 - 13:35 #14
til lyhr007 & carstenknudsen divisionstegnet er en inkompatibel type.
found : int
required : java.lang.String
Avatar billede lyhr007 Nybegynder
13. maj 2002 - 13:37 #15
I hvilken linje er dette?

Det betyder at du har en int men at java compileren regnede med at få en String.
Avatar billede kunop Nybegynder
13. maj 2002 - 13:39 #16
linie 77 hvor der står: bygning=bygning2/bygning3;
Avatar billede carstenknudsen Nybegynder
13. maj 2002 - 13:40 #17
Smid koden op så kan du lynhurtigt få
et svar.
Avatar billede kunop Nybegynder
13. maj 2002 - 14:09 #18
import java.sql.*;
import java.lang.Number.*;   

class StatistikUdregn
{
    MyDatabaseApp MDA = new MyDatabaseApp("booking");
    ResultSet rs, rs2, rs3, rs4, rs5, rs6;
    String lokale;
    double bygning, bygning2, bygning3, tid, tid2, tid3;
   

    public String lokale(String startdato, String slutdato) throws SQLException
    {
       
        rs= MDA.query(    "SELECT...;");
       
       
        while(rs.next())
        {
            lokale+= rs.getString(1)+" - "+rs.getString(8)+"\n";
           
        }
       
        System.out.println(lokale);
       
       
        return lokale;


    }

    public double bygning(String startdato, String slutdato, String bygning)
    {
        rs2= MDA.query(    "SELECT...;");
        while(rs2.next())
        {
            bygning2= rs2.getDouble(1);
        }

       
        rs3= MDA.query(    "SELECT...;");
        while(rs3.next())
        {
            bygning3= rs3.getDouble(1);
        }

       
        t
            bygning= bygning2/bygning3;
   
        return bygning;



    }

    public double tid(String startdato, String slutdato)
    {
        rs4= MDA.query(    "SELECT);");
                               
        while(rs4.next())
        {
            tid2= rs4.getDouble(1);
        }

        rs5=MDA.query(    "SELECT...);");
                               
        while(rs5.next())
        {
            tid3= rs5.getDouble(1);   
        }

        tid= tid2/tid3;
       
        return tid;



    }

    public static void main (String [] args) throws SQLException
    {
        StatistikUdregn SU=new StatistikUdregn();
        SU.lokale("05-05-2000","08-05-2000");
        System.out.println("wewe");
    }

}
Avatar billede carstenknudsen Nybegynder
13. maj 2002 - 14:14 #19
Problemet er at bygning er erklæret
som en String og så kan den ikke sættes
lig med resultatet af en division.
Fjern parameteren og erklær bygning
i metoden af typen double.
Avatar billede carstenknudsen Nybegynder
13. maj 2002 - 14:17 #20
double bygning = bygning2/bygning3;
Avatar billede kunop Nybegynder
13. maj 2002 - 14:23 #21
Carstenknudsen havde helt ret hvad angår string. Men mit spm. gik jo fra starten ud på hvordan man foretog en division, så derfor fortjener lyhr007 også point.
Avatar billede lyhr007 Nybegynder
13. maj 2002 - 14:24 #22
Syntes ´nu det var carstenknudsen der løste dit problem...giv ham points...
Avatar billede lyhr007 Nybegynder
13. maj 2002 - 14:24 #23
hov...
Avatar billede carstenknudsen Nybegynder
13. maj 2002 - 14:33 #24
Det er god praksis at give lidt points
til alle dem der bidrager, også selvom
det ikke altid er 100% svaret på det
oprindelige spørgsmål. Det er ofte således
at man ikke helt ved hvad man skal spørge
om når man har problemet foran sig, og der
kan jo være nogle der har alternative
løsningsforslag og de kan jo også være
værdifulde.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester