AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Nachkommastellen vom Typ Real extrahieren und dann runden
Thema durchsuchen
Ansicht
Themen-Optionen

Nachkommastellen vom Typ Real extrahieren und dann runden

Ein Thema von juergen · begonnen am 18. Feb 2006 · letzter Beitrag vom 18. Feb 2006
Antwort Antwort
Seite 2 von 2     12   
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#11

Re: Nachkommastellen vom Typ Real extrahieren und dann runde

  Alt 18. Feb 2006, 18:29
wenn Du die letzten 3 Ziffern hinter dem Komma haben möchtest.
muss der Restwert mit 1000 multipliziert werden.

aus 0,2 werden 200
aus 0,21 werden 210
aus 0,234 werden 234

um zu prüfen ob der Wert eine Zahl ist die ganzzahlig durch 100 teilbar ist


Delphi-Quellcode:
if (zahl MOD 100 = 0) then
  ergebnis := zahl DIV 100
else
  if (zahl MOD 10 = 0) then
    ergebnis := zahl DIV 10;
damit würden aus 0,200 (*1000) -> 200 (DIV 100) -> 2
aus 0,21 (*1000) -> 210 (DIV 10) -> 21
aus 0,212 (*1000) -> 212 -> 212

negative Zahlen kann man vorher mit abs in positive wandeln.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#12

Re: Nachkommastellen vom Typ Real extrahieren und dann runde

  Alt 18. Feb 2006, 19:01
Oder so;
Delphi-Quellcode:
Function ExractFractionalPart (aValue : Extended) : Int64;
Const
  ccMaxDigits = 100000000000; // Weiss nicht, ob das reicht

Begin
  Result := Trunc (ccMaxDigits * Fract (aValue)); // z.b. : 1.23 => 230000000
  While (Result>0) And (Result mod 10 = 0) do // Solange <>0 und die letzte Stelle 0 ist, wegschnippeln
    Result := Result div 10;
End;
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#13

Re: Nachkommastellen vom Typ Real extrahieren und dann runde

  Alt 18. Feb 2006, 19:42
Will auch mitspielen:

Delphi-Quellcode:
uses
  Math;

function Decimals(e: Extended; count: Byte): Int64;
begin
  Result := Round(Frac(e) * Power(10, count));
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#14

Re: Nachkommastellen vom Typ Real extrahieren und dann runde

  Alt 18. Feb 2006, 19:56
Nich schlecht. Weiss er denn, wie viele Nachkommastellen er haben will? Ich hab das so verstanden, das er sie Alle will, ohne zu zählen: 1.2345 => 2345. 1.2345678 ==> 2345678.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#15

Re: Nachkommastellen vom Typ Real extrahieren und dann runde

  Alt 18. Feb 2006, 22:13
@all,
also erst einmal vielen Dank ob der vielen, wirklich interessanten Antworten!
Ich denke ich fange mit marabus Vorlage an


Zitat:
Weiss er denn, wie viele Nachkommastellen er haben will? Ich hab das so verstanden, das er sie Alle will, ohne zu zählen: 1.2345 => 2345. 1.2345678 ==> 2345678.
Nööhhh, ich brauche - egal wie viele Nachkommastellen es gibt - davon nur die ersten 3 Stellen!
Diese muss ich dann auf 2 Stellen runden, von daher ist marabus Vorschlag etwas "überladen"

Allen eine gute Nacht und einen schönen Sonntag!

Grüsse Jürgen
Jürgen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:50 Uhr.
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