Avatar billede kondi.koder Nybegynder
31. december 2001 - 02:50 Der er 8 kommentarer og
1 løsning

BigInteger, hvordan bruges det ?

Hejsa !!

Jeg er rimelig ny i java. Men jeg har fundet noget om en såkaldt biginteger, som skulle kunne bruges til at rumme uenedeligt store tal.
Nu ved jeg bare ikke hvordan man bruger sådan en, så hvis en kunne give mig et simpelt eksempel, på hvordan man lige opretter sådan en osv. så ville det være kanon.

Dokumentationen til biginteger er på http://java.sun.com/j2se/1.3/docs/api/java/math/BigInteger.html

Håber at I kan hjælpe.

- kondi.koder ;-)
Avatar billede jakoba Nybegynder
31. december 2001 - 08:27 #1
kik i API-en på Class java.math.BigInteger

Hver biginteger du laver er et objekt og diverse regne operationer laves med funktioner i klassen biginteger snarere end med operatorerne +, -, *, / som vi ellers plejer.

opret en biginteger værdi:
    BigInteger var1 = Biginteger( \"12345678901234567\" );
    BigInteger var2 = Biginteger( \"98765432109876543\" );
diverse Biginteger beregninger:
    BigInteger var3 = var1.add( var2 );      // var1 + var2
    BigInteger var4 = var1.subtract( var2 );  // var1 - var2
    BigInteger var5 = var1.negate();          // -var1
pas på hvis du laver større beregninger. der der funtioner følger regerne for funktioner, ikke operatorer så du skal selv sørge for at a+b*c får b*c udført først:
    BigInteger var6 = var1.add( var2.multiply( var3 ) );

mvh JakobA


Avatar billede jakoba Nybegynder
31. december 2001 - 08:28 #2
Ups.  funtioner følger regerne -> funktioner følger reglerne
Avatar billede greybeard Nybegynder
31. december 2001 - 08:31 #3
Du skal tænke på at det ere en klasse og ikke en primitiv type.
Dokumentationen har du jo selv fundet. Der kan du se hvad du kan bruge den til og hvordan.
Forskellen til ewn primitiv type er at du ikke kan bruge operatorer direkte, men skalo bruge metodekald istedet.
Her er et simpelt eksempel med to forskellige måder at oprette én. Den ene er en konstruktor, der tager en String som parameter, den anden static metode der tager en long som parameter.

import java.math.*;

public class TestBigInt {
   
    public static void main( String[] argv ){
        BigInteger tal1 = BigInteger.valueOf(2000777333);
        BigInteger tal2 = new BigInteger(\"555\");
        System.out.println( tal1 );
        System.out.println( tal2 );
        System.out.println( tal1.add(tal2) );
    }
}
Avatar billede kondi.koder Nybegynder
31. december 2001 - 12:40 #4
Hej Igen!

Hmmmm. hvis jeg køre greybeard\'s kode komer den med 4 fejlmeddelelser, hvor de fleste påstår at punktummerne mellem math og bigint o.lign er fejl.
Kan det tænkes at jeg mangler en include fil ?? Og hvordan får jeg fat i den ?

- kondi.koder :-)
Avatar billede kondi.koder Nybegynder
31. december 2001 - 13:21 #5
Hejsa !

Mine fejl, som jeg får ved kompilering kan ses på: http://www.kondikoder.dk/fejl.gif

- kondi.koder :-)
Avatar billede jakoba Nybegynder
31. december 2001 - 14:10 #6
Du har ikke fået importeret BigInteger klassen. det burde linien
    import java.math.*;
ellers gøre. ??
du kan evt skrive:
    import java.math.BigInteger;
istedetfor.

mvh JakobA
Avatar billede jakoba Nybegynder
31. december 2001 - 14:25 #7
nedenstående er testet og virker på min installation (efter jeg rettede to fejl i min eksempelkode)


import java.math.*;

public class TestBigInt {
 
    public static void main( String[] argv ) {
        BigInteger tal1 = BigInteger.valueOf(2000777333);
        BigInteger tal2 = new BigInteger(\"555\");
        System.out.println( tal1 );
        System.out.println( tal2 );
        System.out.println( tal1.add(tal2) );
       
        //opret en biginteger værdi:
         
        BigInteger var1 = new BigInteger( \"12345678901234567\" );
        BigInteger var2 = new BigInteger( \"98765432109876543\" );
        //diverse Biginteger beregninger:
        BigInteger var3 = var1.add( var2 );      // var1 + var2
        BigInteger var4 = var1.subtract( var2 );  // var1 - var2
        BigInteger var5 = var1.negate();          // -var1
        //pas på hvis du laver større beregninger. de der funtioner
        //følger regerne for funktioner, ikke operatorer
        //så du skal selv sørge for at a+b*c får b*c udført først:
        BigInteger var6 = var1.add( var2.multiply( var3 ) );
        System.out.println( var1 +\", \" +var2 +\", \" +var3 +\", \"
                          +var4 +\", \" +var5 +\", \" +var6 );

    } //end main()
     
} //endclass

mvh JakobA
Avatar billede kondi.koder Nybegynder
31. december 2001 - 15:50 #8
Hejsa !!

Tak til jer begge to. Jakoba får mine point da det var ham der løste problemet med import.
Det skulle nemlig rettes til:
import java.math.BigInteger;

Well anyway, så får i tusind tak. Nu kan jeg endelig komme igang.

Godt nytår, kondi.koder :-)
Avatar billede jakoba Nybegynder
01. januar 2002 - 16:12 #9
takker
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