Hvordan Finder Man kommaet

Tags:    programmering

Jeg er Begyndt at programmere C++ for en lille halvanden måneds tid siden, og tæsker mig for tiden igennem manualer og grundbøger.

Jeg er igang med at lave en lommeregner, og jeg har tænkt mig at lave en funktion så man kan bestemme hvor mange decimaler der skal vises efter kommaet.

Da jeg arbejder med tallet i float, har jeg fundet ud af at det ikke bare lige er såen at gøre.

Compileren jeg er arbejder med er borlandbuilder 6.

Mine Krav til funktionen.

Tallet der skal kontrolleres skal puttes ind skal være float.
Tallet der indikere hvor mange decimaler der skal ud er INT.
Min return værdi skal gerne være float.

Jeg har forsøgt med nogle funktioner i borland.

Der hedder FloatToDecimal og FloatToText.

Min Ide er at prøve at få float tallet puttet over i en char[array]

For derefter at køre en løkke indtil "," kommer

og til sidst køre en løkke med det antal decimaler der skal med.


Men Ak og Ve Efter et par dage har jeg fundet ud af at der nok skal læses lidt mere på lektierne for at få dette til at virke.

Hvis der er nogen ideer til hvordan det ellers kan gribes an med at få lavet denne funktion, er jeg meget lydhør.





5 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Jeg er ikke sikker på at der findes en løsning på dit problem.
Man kunne måske bruge noget i stil med:

Fold kodeboks ind/udKode 




Hvis du er smart, så bruger du doubles. Floats er hurtigere på 32-bit cpu'er, men har ikke nær så stor præcision, som i øvrigt bliver mindre og mindre jo højere tal du sætter det til.

1101110100010110000101000001

Husk, det kræver 42 muskler at se sur ud, det kræver kun 6 at slå idioten ned...



Jeg er ikke sikker på at der findes en løsning på dit problem.
Man kunne måske bruge noget i stil med:

Fold kodeboks ind/udKode 






Svar // ---------------------------------------------------------------

Jeg prøved den funktion, den retunere bare et bogstav, men hvis jeg har forstået din ide rigtig, så vil du rykke bittene over i en string Ved hjælp af <<.

Det lykkedes ikke helt men jeg prøver at arbejde videre med ideen.

Hvordan tildeler man egentlig UDP point ?????, syntes ikke jeg kunne finde noget sted hvor man gjorde det .






Man kan ikke skifte bits i en double (eller float).
Jeg konverterer doublen til en streng, med det ønskede antal decimaler efter ,

For at kunne give UP's skal man bruge et svar; men da jeg ikke samler på point laver jeg kun kommentarer.

Hvis ikke dit problem er løst, må du prøve at uddybe hvad problemet er, så er det muligt at jeg/vi kan finde en løsning.



Man kan ikke skifte bits i en double (eller float).
Jeg konverterer doublen til en streng, med det ønskede antal decimaler efter ,

For at kunne give UP's skal man bruge et svar; men da jeg ikke samler på point laver jeg kun kommentarer.

Hvis ikke dit problem er løst, må du prøve at uddybe hvad problemet er, så er det muligt at jeg/vi kan finde en løsning.



// ---------------------------------------------------------

Jeg har fundet en måde at gøre det på nu!!
Borland havde en funktion der delte mit AnsiStreng op i
en Char Array og i et integer der fortalte mig hvor langt
min indtastede værdi var

Kode ----- Der deler min AnsiString op.

int Size = Edit1->GetTextLen(); //Get length of string in Edit1

Size++; //Add room for null character

char *Buffer = new char[Size]; //Creates Buffer dynamic variable
Edit1->GetTextBuf(Buffer,Size); //Puts Edit1->Text into Buffer

Jeg kan ved hjælp af dette sende min Char array
igennem en for løkke hvor jeg specifikt leder efter ","
når dette så har vist sig tager jeg og køre en anden løkke
for hvor mange decimaler jeg vil have efter kommaet.





t