/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Potens i c++
Fra : preet


Dato : 24-04-02 08:55

Hej,

I forbindelse med et projekt har vi brug for at lave et regnestykke,
hvor potensen 10^60 eller deromkring indgår. Dette kan vi med pow()
eller powl() ikke udregne. Hvilke andre funktioner kan vi benytte og
hvordan?

Mvh

Peter Skjelbo

--
Leveret af:
http://www.kandu.dk/
"Vejen til en hurtig løsning"


 
 
Bertel Lund Hansen (24-04-2002)
Kommentar
Fra : Bertel Lund Hansen


Dato : 24-04-02 09:25

preet skrev:

>I forbindelse med et projekt har vi brug for at lave et regnestykke,
>hvor potensen 10^60 eller deromkring indgår. Dette kan vi med pow()
>eller powl() ikke udregne. Hvilke andre funktioner kan vi benytte og
>hvordan?

Jeg ved ikke om der er smartere metoder, men man kan altid selv styre
mantissen og eksponenten:

double tal=2,718281828;
int eksponent=0, div;

for (int n=0; n<enhelmasse; ++n) {
   tal*=2;
   while (tal>=10) { tal/=10; ++eksponent; }
//eller   div=(int) log10(tal); eksponent+=div; tal/=pow(10,div);
}

Den sidste metode er hurtigst hvis der ellers skulle divideres mange gange
med 10.

--
Bertel
http://lundhansen.dk/bertel/   FIDUSO: http://fiduso.dk/

Jonas Meyer Rasmusse~ (24-04-2002)
Kommentar
Fra : Jonas Meyer Rasmusse~


Dato : 24-04-02 12:29

Hej.

"preet" <preet.news@kandu.dk> writes:

> Hej,
>
> I forbindelse med et projekt har vi brug for at lave et regnestykke,
> hvor potensen 10^60 eller deromkring indgår. Dette kan vi med pow()
> eller powl() ikke udregne. Hvilke andre funktioner kan vi benytte og
> hvordan?

Det ville nok være en ide at poste noget kode, eller præcisere hvad det er du
gør?
Bruger du heltal eller flydende tal?
flydende tal fungere fint:

#include <iostream>
#include <cmath>

int main(int,char**)
{
using namespace std;
cout << pow( 10, 60 ) << endl;
}


berling 501 /home/disk16/meyer > g++ m.c
berling 502 /home/disk16/meyer > ./a.out
1e+60
berling 503 /home/disk16/meyer >


Hvis du vil repræsentere det ved et heltal, så er
dit problem nok at det kræver ca 2^200 bits at repræsentere
tallet 10^60, og så mange bits er der næppe i nogen heltal-typer på
din arkitetur.

mvh
Jonas Meyer Rasmussen


Igor V. Rafienko (24-04-2002)
Kommentar
Fra : Igor V. Rafienko


Dato : 24-04-02 14:02

[ preet.news@kandu.dk ]

[ snip ]

> I forbindelse med et projekt har vi brug for at lave et regnestykke,
> hvor potensen 10^60 eller deromkring indgår. Dette kan vi med pow()
> eller powl() ikke udregne. Hvilke andre funktioner kan vi benytte og
> hvordan?


<URL:http://swox.com/gmp/> ?





ivr
--
If the Americans want the gold medals this bad, then our Mint should
stamp some and hand them over.
      -- G. Raikov, 2002-02-22 on Salt Lake City Olympics

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste