» »

[c#] operator ^ in decimal

[c#] operator ^ in decimal

japol ::

Imam kodo:
decimal a = System.Decimal.Parse(textBox1.Text);
decimal b;
b = 14.34m * (a ^ 6); 
textBox2.Text = b.ToString();

ampak mi podčrta vrstico: b = 14.34m * (a ^ 6); natančneje a^6, dela če uporabim (a*a*a*a*a*a)

Poizkusil sem že:
b = 14.34m * System.Math.Pow(a, 5);
javi napako, da mora biti double.

Se pravi: kako potenciram decimal?
Kako to popravim? Nočem narest nove clase, ki bi nasledila decimal.
  • spremenil: japol ()

arjan_t ::

^ je binarni XOR operator in ne potenca

japol ::

To poznam, namenoma sem tako napisal, ker drugje je znak mišljen za potenco. Zato sem vpisal tudi .Math.Pow...
Uprašanje je, kako potenciram decimalno število?

Mesko89 ::

Zakaj ne preprosto samo namesto decimal double uporabljaš?

Drugače pa ena zanimiva rešitev, ki sem jo najdel na Internetu:

d^c = log(d^c) = c * log(d)
log (d^c) = c * log(d)
d^c = e^(c * log(d))

Torej:
public static double MyPow(double a, double b)
{
    return Math.Exp(b * Math.Log(a));
}


vir: http://stackoverflow.com/questions/4291...

darkolord ::

Zakaj ne preprosto samo namesto decimal double uporabljaš?
Mogoče rabi večjo natančnost?

Mesko89 ::

double je 64 bitno z dvojno natančnostjo. Za navadno računanje je to popolnoma zadosti (če izvzamemo nekaj redkih algoritmov). Ampak glede na to kar vidim zgoraj ne vidim razloga, da bi uporabil decimal. :)

japol ::

V resnici je:
b = -68,450*a^5 + 503,115*a^4 - 1.515,077*a^3 + 2.372,939*a^2 - 1.944,844*a + 709,098
samo se mi ni zdelo smiselno celotno enačbo pisati.

technolog ::

pow() ti ne deluje na decimal tipu... Zakaj pa ne uporabiš a*a*a*a*a? Če deluje, zakaj pa ne? Problem je edino, ker ne moreš dinamično prilagajat števila faktorjev.

Če rabiš večjo natančnost, se mi zdi da obstaja tudi double long, ki je še bolj natančen kot double.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

float vs decimal

Oddelek: Programiranje
366303 (4436) Looooooka
»

Java[kotne funkcije]

Oddelek: Šola
5683 (639) Mesar
»

VB.NET evklidov algoritem razširjen

Oddelek: Programiranje
8902 (749) Yacked2
»

c# class

Oddelek: Programiranje
342278 (1872) japol
»

BigInteger-->BigDecimal

Oddelek: Programiranje
8956 (852) FlashM

Več podobnih tem