Jeg har været ude i noget en gang hvor delphi på irriterende vis ikke fattede hvad jeg ville når det drejede sig om division hvor der indgik både ints og doubles. Det er sikkert bare et spørgsmål om definitionen af overloadingen på operatorerne og kan muligvis slås op i noget dokumentation, men nu bruger jeg bare altid rene doubles ved division/multiplikation, dvs i.st.f. 25 skriver jeg 25.0 og i stedet for 100 skriver jeg 100.0. Det er ikke sikkert det løser problemet her, men det er da et lile bud. Desuden ville jeg foretrække strtofloat: tax.Text := FloatToStr(25.0*StrToFloat(curEdit2.Text)/100.0);
Sharon: Skriv hvad din fejl er. Får du en kompilerfejl? Er det en fejl i dit output? Specificer nærmere!
Nej det er ikke noget hokuspokus i det, delphi regner helt normalt, men bruger de variable der er i regnestykket til "mellem regning" dvs. hvis du laver en div. og du bruger en heltals variable i dit regnestykke kan du få et problem som nemt løses ved at "tvinge" delphi til at regne i den type du vil ha', men det kan altsammen læses i Delphi udemærkede hjælpefiler ( F1 )
Din kode bliver bedre om du trækker værdierne ud i variable. Så er der ingen tvivl og debugging bliver også lettere (og så giv dem og komponenterne nogle fornuftige navne):
var Value, TaxValue : double; begin Value := StrToFloatDef(curEdit2.Text,0); TaxValue := Value / 100 * 25; Tax.Text := format('%6.2f',[TaxValue]); end;
Det er da noget mere læsbart, ikke?
Synes godt om
Slettet bruger
16. februar 2007 - 19:03#6
har nu 2 curedit så koden ser ud som følgende..
tax.value := (25*StrToFloat(curEdit2.Text)/100);
virker nu men har spekuleret i hvorfor quickrep kun viser f.eks 395,5 og ikke 0 i 395,50 men det har nok noget med decimal - eksemplet virker fint med decimaler
de amdre beregninger kommer decimalet på f.eks 495,5 ikke frem der skulle gerne stå 495,50 har det noget med float at gøre at den kan håndtere decimaler?
hrc...du har ret man skal have diciplin i at give fornuftlige navne da overskueligheden også bliver bedre.
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.