30. juli 2002 - 05:27Der er
5 kommentarer og 1 løsning
Bedre præcision end double i visual c++ 6.0
Jeg skal bruge en floating point type, der kan antage større floating point værdi end almindelig double type kan hos MS. I UNIX er det lige til (long double), men i MS' definition er denne implementeret som almindelig double.
Windows: En long double har samme størrelse som en double (ligesom en long int har samme størrelse som en int) UNIX: En long double er dobbelt så stor som en double, men samme størrelse som en windows-long double.
Større præcision af floats end hvad der kan være i max 2 * registerstørrelsen på din CPU (dvs. under normale omstændigheder max 64 bits, dvs. 8 bytes) findes ikke. Nogle compileren har dog allerede implementeret andre typer som kan.
Under C++ Builder findes typen BCD (Binary coded decimal), eller er der ikke noget andet alternati end at lave en type selv, f.eks. på basis af to long integers (en til integer-delen og et til decimalerne), og overloade det normale regne operationer for dem.
Jeg er bange for at der skal noget ekstra kode til at frembringe dette! Din processor arbejder nu altså også kun med 80 bits (10 bytes), så hvis du vil have floating-point med større precision, så ryger hastigheden gevaldigt ned!
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.