Avatar billede slinky Nybegynder
04. oktober 2006 - 02:03 Der er 5 kommentarer

konvertere char[] til float

hej

lad os antage har jeg har et char array

char hat[200]

vil så gerne hive fat i et element hat[15], konvere det til et tal, multiplicere det med et andet float tal og derefter smide det tilbage i char arrayet - hvordan gør jeg det??
Avatar billede arne_v Ekspert
04. oktober 2006 - 02:07 #1
virker:

hat[15] = hat[15]*x;

ikke ?
Avatar billede segmose Nybegynder
04. oktober 2006 - 09:32 #2
hat[15] er en char et enkelt tegn vil du bruge det some en byte?
eller er det der et ascii representation af et tal begynder som "4321"?
Avatar billede hardcorewizard Nybegynder
10. oktober 2006 - 14:08 #3
Du snakker om at gange med floats, og gemme det igen. Er det hensigtsmæssigt? Du har jo ingen mulighed for at gemme floating point værdier som en char, så det vil helt sikkert medføre tab af data.
Mener du int?
Avatar billede faerch Nybegynder
25. november 2006 - 10:40 #4
Dit spørgsmål kan forståes på flere måder, men prøver at give et svar på det jeg tror du spørger om.

Hvis element hat[15] er et tegn for et ciffer kan du gøre følgende.

hat[15] = ((hat[15]- '0') * (char)n) + '0';

Hvis hat[15] opfattes som et tegn, indeholder hat[15] ascii-værdien for dette tegn. Hvis du f.eks. ønsker at konvertere ascii-værdien for '7' til tallet 7 kan du trække ascii-værdien af '0' fra. Omvendt hvis du vil den anden vej.

Hvis n er en float har jeg tilladt mig at indsætte en typecasting på variablen, således at den opfatter n som et heltal i beregningen.
Der er ingen grund til at du bruger en float i denne beregning, da du alligevel ingen decimaler vil have i dit resultat. Float er tungere end heltal for computeren beregningsmæssigt, så derfor bruger man dem kun når det er nøvendigt.
Avatar billede faerch Nybegynder
27. november 2006 - 12:13 #5
Hej igen.
Jeg kom lige til at kigge på kode og se at jeg havde glemt %10, således at koden kommer til at se således ud:

hat[15] = (((hat[15]- '0') * (char)n)%10) + '0';

%10 laver en division med 10, og lægger resten tilbage i værdien. Således at hvis tallet giver 12, bliver der lagt tallet 2 tilbage på det pågældende ciffer.

En lidt mere overskuelig fremstilling med samme funktion kommer her:
  hat[5] -= '0';  //converter til tal (hat[5] = hat[5] - '0';)
  hat[5] *= (char)n; //gang med float
  hat[5] %= 10;  //hvis f.eks. resultatet = 12, bliver det til 2.
  hat[5] += '0'; //converter til tegn

Håber det var noget du kunne bruge
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester