Avatar billede bramsing Nybegynder
18. september 2003 - 17:18 Der er 14 kommentarer og
1 løsning

fjern decimaler efter komma

Hvordan fjerner man decimalerne der er efter kommaet??

Jeg har denne kode men jeg vil gerne have op/nedrundet til det nærmeste hele tal...
Edit4.Text := (floattostr(strtofloat(Edit3.Text)/987654321 ));

Med venlig hilsen
//'bramsing'
Avatar billede mysitesolution Nybegynder
18. september 2003 - 17:21 #1
Edit4.Text := inttostr(strtoint(Edit3.Text) div 987654321);
Avatar billede mysitesolution Nybegynder
18. september 2003 - 17:22 #2
svar
Avatar billede arne_v Ekspert
18. september 2003 - 17:22 #3
Edit4.Text := (floattostr(round(strtofloat(Edit3.Text)/987654321) ));
Avatar billede Slettet bruger
18. september 2003 - 17:22 #4
Brug Round():

Edit4.Text := (inttostr(Round(strtofloat(Edit3.Text)/987654321 )));
Avatar billede athlon-pascal Juniormester
18. september 2003 - 17:22 #5
Round(); //Runder op eller ned
Trunc(); //Fjerner decimaler helt, uden at runde op
Avatar billede arne_v Ekspert
18. september 2003 - 17:23 #6
Evt.

Edit4.Text := (inttostr(round(strtofloat(Edit3.Text)/987654321) ));
Avatar billede athlon-pascal Juniormester
18. september 2003 - 17:24 #7
3 før mig... jeg er vist for langsom ;-)
http://www.pythia.dk/tips/vis_tip.php?id=64
Avatar billede bramsing Nybegynder
18. september 2003 - 17:26 #8
mysitesolution.. det er tit for store tal til at bruge integer... Men arne_v's svar virker...
Jeg takker for hjælpen...
Avatar billede mysitesolution Nybegynder
18. september 2003 - 17:28 #9
jep jep... var heller ikke sikkert på det virkede...
Avatar billede athlon-pascal Juniormester
18. september 2003 - 17:33 #10
Vi kan også selv lege lidt...

function Hest(X: Extended): Int64;
begin
  Result := Trunc(X);
  X := X - Trunc(X);
  if X >= 0.5 then
    Inc(Result);
end;

Edit4.Text := floattostr(Hest(strtofloat(Edit3.Text)/987654321));
Avatar billede athlon-pascal Juniormester
18. september 2003 - 17:38 #11
Men selv den funktion er ikke helt præcis, 123,499999999999999994 vil give 124.
Avatar billede bramsing Nybegynder
18. september 2003 - 17:40 #12
Jeg vil gerne give athlon-pascal point for sit lille arbejde...

Jeg lægger et spørgsmål til dig ;o)
Avatar billede athlon-pascal Juniormester
18. september 2003 - 17:40 #13
Nej, det behøver du ikke...
Avatar billede arne_v Ekspert
18. september 2003 - 18:35 #14
Den funktion er helt præcis.

123,499999999999999994 og 123,5 er nemlig samme tal !

I extended data type altså !
Avatar billede arne_v Ekspert
18. september 2003 - 18:36 #15
Se f.eks. følgende lille program:

program BigFloat;

{$APPTYPE CONSOLE}

uses
  SysUtils, Classes;

var
    x1,x2 : extended;
    s : array [1..sizeof(extended)*2] of char;
    i : integer;

begin
  x1 := 123.5;
  bintohex(@x1,@s,sizeof(x1));
  for i := 1 to 20 do write(s[i]);
  writeln;
  x2 := 123.499999999999999994;
  bintohex(@x2,@s,sizeof(x2));
  for i := 1 to 20 do write(s[i]);
  writeln;
end.

(beklager at det er console, men sådan programmerer jeg altså i Pascal)
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

Seneste spørgsmål Seneste aktivitet
I dag 10:21 Ny printer, men hvilken Af mort1 i Printere
I går 19:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging