AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

SetRoundMode wirkt nicht immer

Ein Thema von Jasocul · begonnen am 15. Mär 2024 · letzter Beitrag vom 15. Mär 2024
 
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.368 Beiträge
 
Delphi 11 Alexandria
 
#1

SetRoundMode wirkt nicht immer

  Alt 15. Mär 2024, 10:40
Delphi-Version: 11 Alexandria
Kleines Gimmick zum Wochenende.
Da ich gerade ein größeres Refactoring mache, wollte ich alte (etwas merkwürdige) Berechnungen mit Rundungen überarbeiten.
Dabei hatte ich Source, der etwa so aussah:
Delphi-Quellcode:
  Result := Result * Faktor;
  SetRoundMode(rmUp);
  Result := SimpleRoundTo(Result); // Oder war es RoundTo(Result, -2) ?
  SetRoundMode(rmNearest);
Ergebnis: Die Rundung hat nicht funktioniert, wie es vorgesehen war.
Dann wie folgt geändert:
Delphi-Quellcode:
  SetRoundMode(rmUp);
  Result := Result * Faktor;
  Result := SimpleRoundTo(Result);
  SetRoundMode(rmNearest);
Ergebnis: Jetzt funktioniert es.
Es scheint so, als müssten die verwendeten Variablen im gesamten Kontext den RoundMode haben. Ich habe das nicht weiter geprüft und im Endeffekt verwerfen müssen. Der Code ist also auch aus dem Kopf geschrieben.
Ich bin auf die Lösung gekommen, als ich mit dem Debugger nach der Rundung nochmal in die Berechnnungszeile gegangen bin und die Schritte wiederholt habe. Ich dachte erst, dass die Rundungsfunktion doppelt durchlaufen werden müsste (manchmal macht Delphi schon merkürdige Dinge). Aber es war halt die andere Lösung des Problems.

Leider bin ich am WE nicht online. Vielleicht ist das nur bei mir so. Aber vielleicht hat jemand Lust, das selbst mal zu testen. Dann wüsste ich zumindest, ob es an Delphi oder mir liegt.
Peter
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 06:40 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