AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Matheprobleme mit round

Ein Thema von R2D2 · begonnen am 17. Apr 2006 · letzter Beitrag vom 17. Apr 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von R2D2
R2D2

Registriert seit: 20. Jan 2006
Ort: München
253 Beiträge
 
Delphi 2005 Personal
 
#1

Matheprobleme mit round

  Alt 17. Apr 2006, 13:58
Hallo!

Ich habe ein Problem mit der Funktion round. Laut Delphi wird 58,5 nicht auf 59 gerundet, sondern auf 58.

Was soll ich tun?
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Matheprobleme mit round

  Alt 17. Apr 2006, 14:00
Wie wärs damit:
round(Zahl*100) / 100
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#3

Re: Matheprobleme mit round

  Alt 17. Apr 2006, 14:03
Hm, ich erinner mich an eine Variable Delphi-Referenz durchsuchenRoundMode, die das rundungsverhalten bestimmt... Könnt auch anders heißen
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#4

Re: Matheprobleme mit round

  Alt 17. Apr 2006, 14:08
Zitat von inherited:
Wie wärs damit:
round(Zahl*100) / 100
Du weißt aber, dass das nichts bringt, oder? Das rundet auf 2 Stellen nach dem Komma, aber bei .5 immer noch ab!


Flare
Willy Scheibel
  Mit Zitat antworten Zitat
Benutzerbild von R2D2
R2D2

Registriert seit: 20. Jan 2006
Ort: München
253 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Matheprobleme mit round

  Alt 17. Apr 2006, 14:10
Danke! Ich arbeite jetzt so:
round(Zahl+0.01); Anscheinend rundet round immer bei .5 Werten ab.
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Matheprobleme mit round

  Alt 17. Apr 2006, 14:11
Nicht ganz! Siehe hier

Gruß Hawkeye
  Mit Zitat antworten Zitat
Eichhoernchen

Registriert seit: 22. Apr 2004
Ort: Hagen
322 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Matheprobleme mit round

  Alt 17. Apr 2006, 14:11
Delphi-Quellcode:

Hinweis:   Die Funktionsweise von Round kann mit der Prozedur Set8087CW oder der Funktion SetRoundMode gesteuert werden.


Unit Math


type TFPURoundingMode = (rmNearest, rmDown, rmUp, rmTruncate);
function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode;

Beschreibung

Mit SetRoundMode können Sie festlegen, welchen Rundungsmodus die FPU verwendet. Der Rundungsmodus kann folgende Werte annehmen:

Wert   Bedeutung

rmNearest   Rundet zum nächsten Wert.
rmDown   Rundet gegen minus unendlich.
rmUp   Rundet gegen plus unendlich.
rmTruncate   Schneidet den Wert ab. Positive Werte werden auf-, negative Werte abgerundet.
Man wird wohl dann auf rmnearest setzen müssen und dann müsste Round auch "richtig" runden


Edit: Habs mal getestet, kommt das selbe raus.

Aber wenn ich round(1.5) mache kommt 2 raus aber bei round(58.5) = 58
das Verhalten versteh ich dann nicht. Scheint aber nur bei 1.5 so zu sein, bei 0.5 und 2.5 macht er das selbe wie bei 58.5
Jan
  Mit Zitat antworten Zitat
Eichhoernchen

Registriert seit: 22. Apr 2004
Ort: Hagen
322 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Matheprobleme mit round

  Alt 17. Apr 2006, 14:24
Man köntne aber:

Delphi-Quellcode:
function mathround(x : real) : integer;
Begin
 if frac(x) >= 0.5 //frac liefert den das nach dem ,
   then result := ceil(x) //rundet auf
   else result := trunc(x); //runded ab
end;
man müsste nur mal gucken wie es bei negativen Zahlen aussieht
Jan
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#9

Re: Matheprobleme mit round

  Alt 17. Apr 2006, 14:26
@Eichhörnchen: Gucke mal wo Hawkeye219 hingelinkt hat!
Zitat von Hawkeye219:
Nicht ganz! Siehe hier

Gruß Hawkeye

Flare
Willy Scheibel
  Mit Zitat antworten Zitat
Eichhoernchen

Registriert seit: 22. Apr 2004
Ort: Hagen
322 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Matheprobleme mit round

  Alt 17. Apr 2006, 14:28
ach mist... den hab ich übersehen

hab aber fast das gleiche nur stimmt wohl mein trunc net..

Daher nochmal:
Delphi-Quellcode:

function mathround(x : real) : integer;
Begin
if frac(x) >= 0.5 //frac liefert den das nach dem ,
   then result := ceil(x) //rundet auf
   else result := floor(x); //runded ab
end;
Jan
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 08:49 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