![]() |
AW: Welcher Befehl rundet wie "Round" in Borland C++ ?
Zitat:
Zitat:
Das Round vom Delphi (also renauer die Recheneinheit des PCs) rundet so wie es die Banken machen.
Code:
Das soll irgendwie gerechter sein, da, wenn man mit einer festen Anzahl an Nachkommastellen arbeitet, sonst mehr auf als abgerundet wird.
Round(0,49) = 0
Round(0,50) = 0 v Round(0,51) = 1 Round(1,49) = 1 Round(1,50) = 2 ^ Round(1,51) = 2 Round(2,49) = 2 Round(2,50) = 2 v Round(2,51) = 3 Round(3,49) = 3 Round(3,50) = 4 ^ Round(3,51) = 4 Round(4,49) = 4 Round(4,50) = 4 v Round(4,51) = 5 Denn es gibt eine ungerade Anzahl an Werten. (ab 0.5 Einer mehr) mathematisches Runden abdunden: 0.1 0.2 0.3 0.4 aufrunden: 0.5 0.6 0.7 0.8 0.9 nicht runden: 0.0 dieses Banken-Runden abdunden: 0.1 0.2 0.3 0.4 im wechsel auf oder ab: 0.5 aufrunden: 0.6 0.7 0.8 0.9 nicht runden: 0.0 |
AW: Welcher Befehl rundet wie "Round" in Borland C++ ?
Ist mir noch gar nicht aufgefallen (hätte die Werte besser zweimal nacheinander ausgeben lassen). Wie wird gewechselt bzw. wo wird der letzte Wechsel ob auf oder ab gespeichert?
Wäre in dem Fall ja schwer bis gar nicht vorhersagbar, ob ein Round nun gerade auf oder abrundet. Man kann in der C++ DLL ja nicht vorhersehen, wie die Zahl beim nächsten mal von Delphi behandelt wird. €: Der Wechsel ist wohl auf einen Funktions-Block beschränkt. Neuer Block, immer erst mal aufrunden. Ist aber dann fast einfacher, für Delphi und C++ eine mathematische Version zu verwenden, statt zu versuchen, das in C++ zu raten? €2: Also runden wie in Delphi nachbauen OK. Runden wie Delphi den gleichen Datenbestand runden wird/würde, schwer bis unmöglich. |
AW: Welcher Befehl rundet wie "Round" in Borland C++ ?
Es ist schon vorhersehbar.
gerade Zahl vor dem Komma > 0.5 abrunden ungerade Zahl vor dem Komma > 0.5 aufrunden (also bei den positiven Zahlen ... negative wird es ähnlich sein, hab'sch jetzt aber noch nicht nachgesehn) |
AW: Welcher Befehl rundet wie "Round" in Borland C++ ?
Hallo,
wie genau gerundet werden soll? es sollte auf maximal 2 Vorkomma wie Delphi.Round() in Borland C++ 5.01 gerundet werden. MFG |
AW: Welcher Befehl rundet wie "Round" in Borland C++ ?
Zitat:
|
AW: Welcher Befehl rundet wie "Round" in Borland C++ ?
Zitat:
|
AW: Welcher Befehl rundet wie "Round" in Borland C++ ?
Hallo,
machen wir's einfach. 1. Wie funktioniert Delphi.Round(); (was steckt dahinter) um dies in BorlandC++.Fkt() umzuschreiben ? 2. Bitte um Beispiele mit Sourcecode MFG |
AW: Welcher Befehl rundet wie "Round" in Borland C++ ?
Zitat:
Code:
Allerdings scheint BorlandC++ genauso wenig Standard, wie Delphi Standard-Pascal ist.
int lrint(double x);
Zitat:
Code:
#include <stdio.h>
#include <stdlib.h> #include <math.h> long int roundtoeven(double x) { double y; long l; y = 2.0*x; if (floor(y)==y) { l = (long) y; if ((l & 3) == 3) l++; l = l >> 1; } else { l = floor(x+0.5); } return l; } int main (void) { double x; long int l,i; for (i=-50;i<=100;i++) { x = 0.1*i; l = roundtoeven(x); printf("%f %d\n", x, l); } return 0; } |
AW: Welcher Befehl rundet wie "Round" in Borland C++ ?
Hallo,
vielen Dank dies ist die Lösung: roundtoeven(double x); MFG |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz