"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

c(++): sqrt von unsigned long long

schizo 09.03.2014 - 19:00 2136 5
Posts

schizo

Produkt der Gesellschaft
Avatar
Registered: Feb 2003
Location: Vienna
Posts: 2542
Ich möchte von einer unsigned long long Variable die Wurzel ziehen.
Bei der Funktion wurzel=sqrt(zahl) regt sich der Visual Studio 2010 Express Compiler jedoch auf, da sqrt eine Überladene Funktion ist und möchte, dass ich einen Typecast setze (beides sind unsigned long long Variablen). Zur Auswahl stellt er mir jedoch nur long double, float und double, die mich jedoch alle nicht zum Ziel bringen.

Gibts hier einen bekannten Workaround, oder hab ich irgendwo einen Fehler im Code und es sollte auch ohne Typecast funktionieren?
Was ich mitbekommen habe dürfte gcc den Code jedoch kompilieren können :rolleyes:

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Warum sollte dich long double nicht ans Ziel führen?

schizo

Produkt der Gesellschaft
Avatar
Registered: Feb 2003
Location: Vienna
Posts: 2542
Ich benötige den kompletten Zahlenbereich einer 64Bit Zahl und die Mantisse bei long double beträgt leider nur 15 Stellen.
Da ich nicht weiß, wie sich long double beim Runden verhält und das Verhalten sich zu gcc unterscheiden dürfte kann es sein, dass ich dadurch auf Probleme stoße, welche bei unsigned long long nicht auftreten würden.

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Zitat von schizo
Ich benötige den kompletten Zahlenbereich einer 64Bit Zahl und die Mantisse bei long double beträgt leider nur 15 Stellen.

Interessant. Wo ist dann der Unterschied zu einem normalen double?

schizo

Produkt der Gesellschaft
Avatar
Registered: Feb 2003
Location: Vienna
Posts: 2542
Zitat von Ringding
Interessant. Wo ist dann der Unterschied zu einem normalen double?

Laut MSDN existiert keiner.

smashIt

master of disaster
Avatar
Registered: Feb 2004
Location: OÖ
Posts: 5214
die mantisse bei einer long double (mit 80bit) is doch üblicherweise 64 bit
oder steh ich grad voll daneben?

------edith packts grade nicht---------
das ms da wirklich nicht mehr wie double anbietet :bash:
Bearbeitet von smashIt am 10.03.2014, 11:43
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz