spørgsmål til pow()

Tags:    c++

Jeg er ved at skrive et program der benytter sig meget af pow() funktionen.
Mit spørgsmål er: er det tilladt at bruge funktionen på følgende måde: pow(x,(1/3)); hvorved x er en float ? (Det er en 1/3 vel sådan set også)...

Umiddelbart kan jeg nemlig ikke få det til at virke i mit program. og ja, jeg har inkluderet math.h.

Edit: rettet tyrkfejl...

[Redigeret d. 16/01-06 18:16:31 af Sebastian Metzger]



6 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
kan ikke se men du mangler vist et afsluttende ) vis det du skriver er lovligt :)

pow(x,(1/3));
-----------------------------------------------------------------------------

Min side ->www.the-hive.dk/~donp/



ups, tyrkfejl. I min code står der faktisk pow(x,1/3); men det gør ingen forskel fra når jeg skriver pow(x,(1/3)); (har checket efter.)



Jeg er ved at skrive et program der benytter sig meget af pow() funktionen.
Mit spørgsmål er: er det tilladt at bruge funktionen på følgende måde: pow(x,(1/3)); hvorved x er en float ? (Det er en 1/3 vel sådan set også)...

Umiddelbart kan jeg nemlig ikke få det til at virke i mit program. og ja, jeg har inkluderet math.h.

Edit: rettet tyrkfejl...

[Redigeret d. 16/01-06 18:16:31 af Sebastian Metzger]


Skulle ikke mene at du kan gøre det, x skal være en double så vidt jeg ved, du kan evt tjekke:
http://cppreference.com/stdmath/pow.html

Og så skal du self have math.h included

\\edit
Du kan jo bare lave en typecast
Fold kodeboks ind/udKode 
, man burde kunne lave det på den måde, har dog ikke testet det



[Redigeret d. 16/01-06 19:32:08 af Søren]



I C og C++ er 1/3 = 0 da alle regnestykker der kun involverer heltal bliver udført med heltal og man runder altid ned.

Så prøv med 1.0/3.0

I øvrigt kan man med fordel regne med double og ikke float.



Mange tak for svarene, men det viste sig faktisk at det ikke virkede fordi x var <0. Jeg har ingen anelse af hvad der gik galt, men da jeg skiftede fortegn på x gik det hele som det skulle. Selvom jeg ikke umiddelbart kunne bruge jeres svar, har jeg dog lært noget af dem, igen siger jeg mange tak.



Mange tak for svarene, men det viste sig faktisk at det ikke virkede fordi x var <0. Jeg har ingen anelse af hvad der gik galt, men da jeg skiftede fortegn på x gik det hele som det skulle. Selvom jeg ikke umiddelbart kunne bruge jeres svar, har jeg dog lært noget af dem, igen siger jeg mange tak.


pow(x,(1/3));
svarer til kubikrod x
fx.
kubikrod -27 = -3 så det burde virke med en negativ x, men problemmet kan måske være hvis du prøver at stoppe værdien ind i en unsigned variabel el.lign; kubikroden af et negativt tal vil nemlig altid være negativ.



t