Avatar billede Slettet bruger
16. februar 2007 - 01:07 Der er 7 kommentarer og
2 løsninger

beregning af %

jeg bruger følgende kode til beregning af % men den dur ikke får en fejl når den køres i programmet

tax er en alm edit
curedit kan kun indeholde valuta værdier f.eks kr. 200 altså value

25 er %

tax.Text:=(FloatToStr(StrToInt(curEdit2.Text)/100*StrToInt('25')));
Avatar billede arne_v Ekspert
16. februar 2007 - 01:59 #1
tax.Text := FloatToStr(25.0*StrToInt(curEdit2.Text)/100);

er nok lidt kortere, men jeg kan ikke lige se hvorfor det skulle fjerne fejlen

hvis du skriver 'kr. 200' i curEdit2 kan jeg naturligvis godt se hvorfor - du skal kun
skrive '200' (uden single dapper)
Avatar billede yates Nybegynder
16. februar 2007 - 08:50 #2
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!

Y.
Avatar billede vallemanden Nybegynder
16. februar 2007 - 10:27 #3
tax.Text:=Format ( '%3.2f', [ (StrToFloat(curEdit2.Text)/100) * StrToFloat('25') ] );

(undlad mellemrummene)
Avatar billede martinlind Nybegynder
16. februar 2007 - 13:23 #4
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 )

PS. Lidt ala det "vates" er inde på :)
Avatar billede hrc Mester
16. februar 2007 - 14:14 #5
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?
Avatar billede 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.
Avatar billede Slettet bruger
01. marts 2007 - 00:01 #7
alt kører som det skal

smid lige et svar i forskellige...
Avatar billede vallemanden Nybegynder
01. marts 2007 - 02:03 #8
her
Avatar billede hrc Mester
01. marts 2007 - 09:34 #9
.. er endnu et svar
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