![]() |
Welcher Befehl rundet wie "Round" in Borland C++ ?
MFG
Ati |
AW: Welcher Befehl rundet wie "Round" in Borland C++ ?
Wie rundet den Round in C/C++? Und was gefällt dir nicht an Round in Delphi?
|
AW: Welcher Befehl rundet wie "Round" in Borland C++ ?
Zitat:
Es steht also durchaus zu vermuten, daß vielleicht bereits die Delphi-Funktion genutzt wird. Ansonsten lohnt sich vielleicht noch ein Blick in ![]() ![]() |
AW: Welcher Befehl rundet wie "Round" in Borland C++ ?
Hallo,
ich habe ein DLL, der in C++ Werte berechnet da habe ich festgestellt, daß bei Delphi für einen Wert Round(46.57142857)=47 herausgibt und bei Borland C++ ceil(46.57142857)=46 herausgibt. Meine Frage wie kann ich den Delphi Round() Fkt genauso in C++ haben mit dem gleichen Ergebnis. MFG |
AW: Welcher Befehl rundet wie "Round" in Borland C++ ?
Ähm, du weißt aber, dass Round und Ceil zwei unterschiedliche Funktionen sind? Deswegen heißt Ceil ja auch Ceil und nicht Round. Ceil rundet immer auf. Das Gegenstück wäre Floor.
PS: Hast du mal nur zum Spaß mal Ceil in der Delphi Hilfe eingegeben? |
AW: Welcher Befehl rundet wie "Round" in Borland C++ ?
Zitat:
![]() |
AW: Welcher Befehl rundet wie "Round" in Borland C++ ?
@Assarbad: Es gibt auch Ceil in Delphi. Und das ist es ja, was er sucht.
|
AW: Welcher Befehl rundet wie "Round" in Borland C++ ?
:wall:
Wow, die Frage war auch ziemlich verschwurbelt gestellt. :roll: |
AW: Welcher Befehl rundet wie "Round" in Borland C++ ?
Du bist wohl etwas aus der Übung, was Delphi Foren angeht. ;)
|
AW: Welcher Befehl rundet wie "Round" in Borland C++ ?
|
AW: Welcher Befehl rundet wie "Round" in Borland C++ ?
Hallo,
leider kein Erfolg. Also ich suche in Borland C++ eine Fkt, der den gleichen wie in Delphi Round() macht. MFG |
AW: Welcher Befehl rundet wie "Round" in Borland C++ ?
Dann nimm am Besten die Delphi Funktion.
|
AW: Welcher Befehl rundet wie "Round" in Borland C++ ?
Das Delphi-Round wendet sich direkt an den mathematischen CoProzessor und in C++ sollte es auch eine Funktion geben, welche das Gleiche macht
und demnach das selbe Ergebnis liefern sollte. In Borland C++ würde ich erwarten, daß diese Funktion ebenfalls "round" heißt.
Delphi-Quellcode:
{ Procedures and functions that need compiler magic }
procedure _ROUND; asm { -> FST(0) Extended argument } { <- EDX:EAX Result } SUB ESP,8 FISTP qword ptr [ESP] FWAIT POP EAX POP EDX end; PS: Runden ist nicht gleich Runden ... siehe ![]() ![]() |
AW: Welcher Befehl rundet wie "Round" in Borland C++ ?
Hallo,
leider keinen Erfolg. Ich suche eine Fkt in Borland C++, die das gleiche macht wie Delphi.Round(); z.B: 326/7=47. MFG |
AW: Welcher Befehl rundet wie "Round" in Borland C++ ?
Nottfalls mit
Code:
y = ceil(x + 0.5);
|
AW: Welcher Befehl rundet wie "Round" in Borland C++ ?
Zitat:
Hier noch ein paar andere Varianten: ![]() |
AW: Welcher Befehl rundet wie "Round" in Borland C++ ?
Hallo,
wie wäre es, wenn du uns mal mitteilst, wie genau gerundet werden soll?
Liebe Grüße, Valentin |
AW: Welcher Befehl rundet wie "Round" in Borland C++ ?
Zitat:
Also
Code:
Womit mkinzler in Post #15 eine passende Lösung angeboten hatte. (€: als Lösungs-Ansatz)
Round(9,00) = 9
Round(9,05) = 9 Round(9,10) = 9 Round(9,15) = 9 Round(9,20) = 9 Round(9,25) = 9 Round(9,30) = 9 Round(9,35) = 9 Round(9,40) = 9 Round(9,45) = 9 Round(9,50) = 10 Round(9,55) = 10 Round(9,60) = 10 Round(9,65) = 10 Round(9,70) = 10 Round(9,75) = 10 Round(9,80) = 10 Round(9,85) = 10 Round(9,90) = 10 Round(9,95) = 10 Round(10,00) = 10 |
AW: Welcher Befehl rundet wie "Round" in Borland C++ ?
Zitat:
|
AW: Welcher Befehl rundet wie "Round" in Borland C++ ?
Weshalb der/die TS noch sagt, es passt nicht. Aber der Ansatz ist richtig und sollte keine Herausforderung sein.
|
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 16:16 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