mit TRUNC erhältst du quasi den ganzzahligen Anteil. den ziehst du von der effektiven Zahl ab. Wenn der Betrag der Differenz > 1, dann zählst du zum Trunc Wert 1 dazu sonst 1 ab.
Das gilt allerdings nur für positive Zahlen. Bei Negativen Zahlen also auch noch entsprechend berücksichtigen.
Riecht nach CASE OF mit 4 Cases...
Gruess
Adrian
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
die hatte ich gefunden. mir fehlte allerdings da ein parameter, der angibt, in welchen schritten er die letzte nachkommastelle rundet.
aber ist ja auch kein problem selbst dazu zu basteln.
danke für eure hilfe!
PS: habs jetz ganz simpel drangebastelt (wie gesagt, nur für positive zahlen):
rSpeed_AVG_decimal :=rSpeed_AVG-TRUNC(rSpeed_AVG);IFrSpeed_AVG_decimal<0.5THEN
  rSpeed_AVG_decimal :=0;ELSE
  rSpeed_AVG_decimal :=0.5;END_IF;rSpeed_AVG :=TRUNC(rSpeed_AVG)+rSpeed_AVG_decimal;
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
servus,
suche eine funktion, die eine real zahl auf eine nachkommastelle rundet, allerdings in 0.5er schritten... also:
11,4 => 11,5
11,7 => 12,0
etc.
hab sowas (selbst in der oscat ) noch nicht gefunden.
gibt es sowas schon? also so eine art TRUNC funktion, die aber konfigurierbar ist.
oder wie kann man sowas am elegantesten lösen?
Bau dir eine Funktion. sollte einfach gehen:
mit TRUNC erhältst du quasi den ganzzahligen Anteil. den ziehst du von der effektiven Zahl ab. Wenn der Betrag der Differenz > 1, dann zählst du zum Trunc Wert 1 dazu sonst 1 ab.
Das gilt allerdings nur für positive Zahlen. Bei Negativen Zahlen also auch noch entsprechend berücksichtigen.
Riecht nach CASE OF mit 4 Cases...
Gruess
Adrian
Die einfachste lösung ist das der Wert mit Zwei Multipliziert wird.
Dann diesen Wert runden und zum schluss wieder dividiert durch zwei.
Var_out := TRUNC ( ( Var_in * 2.0 + 0.5 ) ) / 2.0 ;
Dieses noch in einer neuen Funktion verpacken und fertig.
danke,
habe nur positive real werte, von daher wirds einfach...
trotzdem wäre eine konfigurierbare "round" funktion doch mal was für die oscat, oder hugo?
schau dir mal round(in,N) in der oscat lib an
die rundet eine real zahl in auf n stellen nach dem komma.
dabei wird aus round(3.1415, 3) = 3.142
und aus ound(3.1414,3) = 3.141
danke hugo,
die hatte ich gefunden. mir fehlte allerdings da ein parameter, der angibt, in welchen schritten er die letzte nachkommastelle rundet.
aber ist ja auch kein problem selbst dazu zu basteln.
danke für eure hilfe!
PS: habs jetz ganz simpel drangebastelt (wie gesagt, nur für positive zahlen):
ah jetzt verstehe ich was du möchtest
natürlich gibts sowas oin der oscat lib un es nennt sich stair
eine funktion die nur bestimmte ausgangsschritte zulässt
hmpf... dachte ich mir... wieder zu blöd zum suchen gewesen...
danke dir!