AGB  ·  Datenschutz  ·  Impressum  







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

Power funktioniert nicht wie gedacht

Ein Thema von DieDolly · begonnen am 24. Jul 2018 · letzter Beitrag vom 25. Jul 2018
Antwort Antwort
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#1

AW: Power funktioniert nicht wie gedacht

  Alt 24. Jul 2018, 22:01
So sieht mein Versuch aus. Alles was über 1 TiB hinaus geht, kann ich verwerfen.

Delphi-Quellcode:
function CalculateSize(Bytes, Multiplier: Int64): UInt64;
const
 MaxSize: Int64 = 1099511627776; // 1 TiB
var
 dTmp: Double;
begin
 if Multiplier > 0 then
  dTmp := System.Math.Power(1024, Multiplier)
 else
  dTmp := 1;

 dTmp := Bytes * dTmp;

 if dTmp > MaxSize then
  dTmp := MaxSize;

 Result := Round(dTmp); // Round um von Double auf Int64 zu kommen [ob Round oder Trunc ist ja egal]
end;
CalculateSize übergebe ich beispielsweise 305 und 2 übergebe, bekomme ich als Ergebnis 305 MiB.
Alles was über 1 TiB geht wird verworfen.

Das macht genau das was ich brauche.
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#2

AW: Power funktioniert nicht wie gedacht

  Alt 24. Jul 2018, 22:09
Ich frage jetzt zu letzen Mal: Warum kannst Du kein Double oder Extended verwenden? function CalculateSize(Bytes, Multiplier: Int64): Double; Die Genauigkeit hast Du eh schon verloren, Du hast als Ergebnis ja max 53 signifikante Mantissa-Bits, es geht jetzt nur noch darum, keinen Integer-Overflow zu erhalten.

Geändert von gammatester (24. Jul 2018 um 22:13 Uhr)
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#3

AW: Power funktioniert nicht wie gedacht

  Alt 24. Jul 2018, 22:16
Weil die Funktion der ich das Ergebnis übergebe Int64 erwartet.
Das Ergebnis darf maximal so groß sein wie die maximale Dateigröße unter NTFS. Also 16 TiB.
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:14 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