webForumDet fria alternativet

Datatyp för stora tal

C/C++ur C/C++

10 svar · 294 visningar · startad av Uwe

Medlem sedan nov. 2003181 inlägg
Frågan#1

Jag har en sträng som är 16 tecken lång. Denna strängen skulle jag behöva göra om till ett heltal, men talet blir för stort för att hanteras av en long double. Är det någon som vet om det finns någon typ som kan hanter så stora tal, eller har andra förslag på hur jag kan göra?

/Uwe

Medlem sedan juni 200010 432 inlägg
#2

Gör en egen datatyp som hanterar stora tal? Heltalet kan ju lagras internt i datatypen i form av en array som då i stort sett kan bli hur stor som helst. Beror ju lite på vad du tänker göra med ditt stora tal... är det bara för att beräkna är det ju bara att då lägga in funktionalitet till datatypen som hanterar den typen av beräkningar du vill göra, dvs styckar upp arrayen på lämpligt sätt och hanterar varje element som den representation den är.

Medlem sedan nov. 2003181 inlägg
#3

Det jag tänker göra är att använda det för beräkningar och även utskrifter på skärmen. Det låter som en bra idé att göra en egen datatyp, men hur skriver man en sån och hur funkar det?

/Uwe

Medlem sedan feb. 20002 300 inlägg
#4

Tog en av de första träffarna jag hittade på Google: http://www.imach.uran.ru/cbignum/

Medlem sedan nov. 2003181 inlägg
#5

Konstigt?

När jag kollar hur stor en long double kan vara får jag talet 9 218 868 437 227 405 311 som svar. Är det inte kostigt då att jag kan använda mina 16 tecken långa tal i en long double när detta talet är större (19 tecken)?

Medlem sedan feb. 20002 300 inlägg
#6

Re: Konstigt?

Uwe skrev:

Är det inte kostigt då att jag kan använda mina 16 tecken långa tal i en long double när detta talet är större (19 tecken)?

Nej? 19 > 16.. ;)

Medlem sedan nov. 2003181 inlägg
#7

:x
Nu fattar jag ingenting Phorpher. Det tal jag försöker är mindre än max-talet dvs 16 < 19.

Borde funka eller?

Medlem sedan feb. 20002 300 inlägg
#8

Jadu. Du får nog posta lite kod isf.

Medlem sedan nov. 2003181 inlägg
#9
char cStrang[20] = "9876543210000221";
long double dTemp;

dTemp = atof(cStrang);

Detta ger inget tillfredställande resultat

Medlem sedan feb. 20002 300 inlägg
#10

atof konverterar en sträng till en float.

Detta kan kanske fungera?
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_strtod.2c_.wcstod.asp

Medlem sedan nov. 2003181 inlägg
#11

:D

Tack som f@n Phorpher. Löste det med _strtold.

140 ms totalt · 3 externa anrop · v20260731065814-full.55e59744
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)