Avatar billede tango42 Nybegynder
30. oktober 2003 - 11:02 Der er 7 kommentarer og
2 løsninger

Spørgsmål vedr. regning med kommatal

Hej,
Jeg har 2 spørgsmål... 1. Jeg har et edit felt, hvor jeg kan indtaste et kommatal (f.eks. 0.001) Det tal vil jeg gerne gange med en integer Error, og dernæst dividere med hundrede... 2. Resultat ønskes så rundet op til nærmeste heltal... Er det noget ala?:

Error, HK: Integer;
BER: Extended;

BER := StrToFloat('Edit2.Text');  // Edit2.Text := '0.001'
HK := (BER * Error)/100; // resultat ønskes rundet op til nærmeste heltal
Avatar billede arne_v Ekspert
30. oktober 2003 - 11:06 #1
BER := StrToFloat(Edit2.Text);
HK := Ceil((BER * Error)/100);
Avatar billede tango42 Nybegynder
30. oktober 2003 - 11:39 #2
Arne_v: Jeg har prøvet men får fejlen: Project1.exe raised exception class EConvertError with message "0.001'is not a valid floating point value'. Jeg kan se at funktionen ceil runder op til nærmeste heltal...Er der en funktion som runder op hvis det første tal efter komma er >= 5 og ned hvis der er < 5?
Avatar billede arne_v Ekspert
30. oktober 2003 - 12:01 #3
Er der kommer noget snavs ind i Edit2.Text (bogstavet O
i.s.f. tallet 0 eller lignende) ?

Fordi umiddelbart virker 0.001 nemlig OK !
Avatar billede arne_v Ekspert
30. oktober 2003 - 12:03 #4
Jeg mener at den funktion hedder Round(x).

Men så er der jo også gode gamle Trunc(x + 0.5) som naturligvis stadig virker !
Avatar billede snowball Novice
30. oktober 2003 - 12:10 #5
I glemmer at Delphi vil have , og ikke . når den til regne med decimaler ;)

procedure TForm1.Button1Click(Sender: TObject);
var
  Error, HK: Integer;
  BER: Extended;
  tmpstr: String;
begin
  Error := 500;
  tmpstr := Edit2.Text;
  If Pos('.',tmpstr) <> -1 Then
    tmpstr := StringReplace(tmpstr,'.',',',[rfReplaceAll]);
  BER := StrToFloat(tmpstr);  // Edit2.Text := '0.001'
  HK := Round((BER * Error)/100); // resultat ønskes rundet op til nærmeste heltal
  ShowMessage(IntToStr(HK));
end;

Snowball
Avatar billede snowball Novice
30. oktober 2003 - 12:11 #6
Linien Error := 500; skal du nok lige fjerne. Det var bare lige så den havde en værdi i mit eksempel ;)

Snowball
Avatar billede zerohero Nybegynder
30. oktober 2003 - 12:17 #7
I Danmark bruger I "," som Decimal Separator, mens man herover i England (og stort set resten af verden) bruger vi "." som Decimal Separator!!! ;))

Det vil sige at naar du koder i Delphi bruger du ALTID "." da det er standard for computeren - men naar du indtaster tal i eventuelt en Edit (naar dit program kore - runtime!) bruger du den decimal separator som der benyttes af det sprog som din Windows er sat op til (I Danmark er det altsaa et ",")...
Avatar billede arne_v Ekspert
30. oktober 2003 - 12:24 #8
Ah - det forklarer jo sagen med '.' versus ',' !
Avatar billede tango42 Nybegynder
30. oktober 2003 - 12:25 #9
Jeg takker de herrer...Jeg må sige snowball, dine svar er ret gode, virkede med det samme, da jeg skiftede punktum ud med et komma, som zerohero så fint forklarer :-)...
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