Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Runden bei FFFixed verhindern. (https://www.delphipraxis.net/122885-runden-bei-fffixed-verhindern.html)

Sudrow 23. Okt 2008 21:11


Runden bei FFFixed verhindern.
 
Guten Abend,
Ich hab ein Problem.
Das ist mein Quelltext:
Delphi-Quellcode:
Note := ((17/3)-(Gesamt/180));
LNote.Caption := floattostrF(Note,ffFixed,1,1);
Wenn ich jetzt Bei Gesamt z.B den Wert 481 nehme kommt eine Zahl um die 2,99..... raus, diese rundet er auf 3,0.

Was ich aber möchte ist das er mir 2,9 anzeigt, das er also genau 1 Kommastelle anzeigt und diese aber nicht rundet, oder wenn dann eben zum besseren. Sodass 2,99 nicht 3,0 sondern 2,90 ist.

Gibts da eine Möglichkeit?

mfg Sudrow

soulies 24. Okt 2008 06:43

Re: Runden bei FFFixed verhindern.
 
hi,

ich glaube eine direkte funktion gibt es dafür nicht aber du könntest mal
folgendes ausprobieren:

Delphi-Quellcode:
function abrunden(value:Double):Double ;
begin
  Result := Int(value) + Floor( Frac( value ) *10 ) / 10 ;
end;

procedure ... (Sender: TObject);
var
  ...
begin
  ...
  Note := ((17/3)-(Gesamt/180));
  LNote.Caption := Format('%.2f',[abrunden(Note)]);
end;
kurze erklärung:

Frac(value) = nachkommaanteil deiner note // z.b. 0.99444
Frac( value ) * 10 // 9.9444
Floor(...) = abrunden nach unten auf nächsten integer wert // 9.0
wieder zurück teilen (/10) // 0.9
Int(value) = ganzzahliger Teil // 2


vllt. bringt es dich weiter ;)


cya

Sudrow 24. Okt 2008 07:12

Re: Runden bei FFFixed verhindern.
 
Delphi-Quellcode:
function THaupt.abrunden(value:Double):Double ;
begin
  Result := Int(value) + Floor( Frac( value ) *10 ) / 10 ;
end;
das klingt schon mal nicht schlecht, dankeschön.
Nur leider sagt er mir bei Floor das er es nicht kennt, er meldet immer nicht deklarierter Bezeichner.
Was kann ich da machen?

mfg Sudrow

soulies 24. Okt 2008 07:13

Re: Runden bei FFFixed verhindern.
 
uses Math ;

cya

Hawkeye219 24. Okt 2008 07:44

Re: Runden bei FFFixed verhindern.
 
Hallo Sudrow,

falls du die Unit Math nicht einbinden möchtest oder kannst:

Delphi-Quellcode:
Note := Int(10 * Note) / 10;
Gruß Hawkeye

Sudrow 24. Okt 2008 07:49

Re: Runden bei FFFixed verhindern.
 
Perfekt beide funktionieren.

Vielen Dank euch zweien. :hello: :hello:
Hat grad die uses eingetragn :)
Aber das andere ist kürzer was meinem großen Quelltext zugute kommt.
Dankeschön.

mfg Sudrow

Luckie 24. Okt 2008 08:06

Re: Runden bei FFFixed verhindern.
 
Zitat:

Zitat von Sudrow
Aber das andere ist kürzer was meinem großen Quelltext zugute kommt.

Ähm, es macht also einen wesentlichen Unterschied bei 2500 Zeilen Quellcode, ob eine Zeile 20 oder 30 Zeichen lang ist?

QuickAndDirty 24. Okt 2008 08:48

Re: Runden bei FFFixed verhindern.
 
Brocken Window Theorie?

Sudrow 26. Okt 2008 20:41

Re: Runden bei FFFixed verhindern.
 
Die Frage wurde zwar eigentlich schon beantwortet, aber zu den angebotenen sachen muss ich doch noch etwas fragen.

Kann ich damit auch erreichen das er die nachkommastelle einfach wegläßt?
Also bei z.B 6,6 schreibt er nur 6, ohne runden und alles.

mfg Sudrow

mkinzler 26. Okt 2008 20:46

Re: Runden bei FFFixed verhindern.
 
Trunc(), Int()


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:26 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz