[Delphi] Rundungsfunktion

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Horschtele, 30. März 2008 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 30. März 2008
    Rundungsfunktion

    Ich brauche die / eine Standartfunktion, um Werte bei zwei Stellen nach dem Komma abzutrennen/ zu runden. Danke für Hilfen, gibt ja glaube ich mehrere Varianten
    Beispiel: ich lasse mir Geld umrechnen. Weil es aber nicht kleinere Beträge als Cent gibt will ich, dass nur 2 Stellen nach dem Komma angezeigt werden.


    EDIT: habnoch ein 2. Problem, das erste ist trotzdem noch zu lösen:

    ich habe eine Funktion: ax³+bx²+cx+d ; die erste Nullstelle sowie a,b,c,d sind bekannt; wie berechne ich die anderen 2 nullstellen?
     
  2. 30. März 2008
    AW: Rundungsfunktion

    Code:
    [B]function [/B]RoundTo([B]const [/B]AValue: Double; [B]const [/B]ADigit: TRoundToRange): Double;
    
    RoundTo(1234567, 3) -> 1234000
    RoundTo(1.234, -2) -> 1.23
    RoundTo(1.235, -2) -> 1.24
    RoundTo(1.245, -2) -> 1.24
    
    oder
    
    [B]function [/B]Format([B]const [/B]Format: [B]string[/B]; [B]const [/B]Args:[B] array of const[/B]): [B]string[/B]; [B]overload[/B];
    [B]function [/B]Format([B]const [/B]Format: [B]string[/B]; [B]const [/B]Args:[B] array of const[/B]; [B]const [/B]FormatSettings: TFormatSettings): [B]string[/B];
    
    Format('%.2f',[2.4564]) -> "2.35"
    
    Weitere Details siehe Delphi Hilfe.

    Mfg Rushh0ur
     
  3. 30. März 2008
    AW: Rundungsfunktion

    JO perfekt

    Das andere hat sich eigentlich fast erledigt aber ein problem habe ich noch:

    Code:
    if d+e*c+e*e*b+e*e*e*a=0
     then
     begin
     b:=(b+e*a)/a;
     c:=(c+b*e+a*e*e)/a;
     if (b*b/4)-c>0
     then
     begin
     x1:=-b/2+sqrt((b*b/4)-c);
     x2:=-b/2-sqrt((b*b/4)-c);
     form1.StringGrid1.Cells[1,form1.StringGrid1.RowCount-1]:='x1='+floattostr(e)+';x2='+floattostr(x1)+';x3='+floattostr(x2);
     end
     else
     begin
     if (b*b/4)-c=0
     then
     begin
     x1:=-b/2;
     form1.StringGrid1.Cells[1,form1.StringGrid1.RowCount-1]:='x1='+floattostr(e)+';x2='+floattostr(x1);
     end
     else
     begin
     form1.StringGrid1.Cells[1,form1.StringGrid1.RowCount-1]:='x1='+floattostr(e);
     end;
     end;
     end;
    
    
    Wenn ich die Nullstellen derart berechnen lasse, dann stimmt das zwar rein von den Formeln her, aber durch ein ungenaue Rechnung des PCs kommt trotzdem nicht das richtige raus. Habt ihr ne Idee?
     
  4. 4. April 2008
    AW: Rundungsfunktion

    Die Variablen als Extended deklarieren, aber ob es viel genauer wird kann ich dir nicht sagen.

    Mfg Rushh0ur
     
  5. 6. April 2008
    AW: Rundungsfunktion

    Ich würde das ganze immer lieber numerisch Lösen als Formeln zu verwenden! Also z.B. das Newton-Verfahren was glaube ich immer (das würde ich zwar nicht unterschreiben, weil es bestimmt Werte gibt, die ungeeignet sind) eine Nullstelle findet! Es gibt viele Numerische Verfahren, sollte man sich an besten eines heraussuchen, was man am besten umstzen könnte.
    Das ganze aus dem Grund, dass ja nicht jede kubische Funktion auch gleich 3 reelle Nullstellen hat, weil die erste angegebene unter Umständen ja bereits eine Doppelte sein kann, etc.!

    Newton anwenden, geht recht einfach, wobei man als erstes Intervalle eingrenzen sollte, in denen die Nullstelle zu finden sein wird! Dann ungefähr in der Mitte des Intervalls beginnen, wobei zu diesem Wert keine zu flache Tangene existieren sollte, weil man sonst aus dem Intervall herausragt und unter umständen die Nullstelle eines anderen Intervalls findet!
     
  6. 8. April 2008
    AW: Rundungsfunktion

    Danke an alle reicht jetzt auch, das mit dem Newton kam leider zu spät.

    BW raus
     
  7. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.