byterechner() - Bytes in größtmögliche Einheit umrechnen

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Weil Stringfield() dynamischer ist. Byte ist 4 zeichen lang, di Abkürzungen haben alle nur 2 zeichen. Statt mit 'units' herumzuexperimentieren, dass es mir für Byte oder eine Abk. die korrekte Startpositions (Pointer) Des Strings zurückgibt, lasse ich einfach Stringielfd.

Außerdem wollte ich nicht "mogeln", indem ich 'Byte' einfach in 'B ' umbennene! Ich finde, es sollte schon ausführlich Byte heißen, oder eben KB, MB, GB, TB, PB, EP.

Außerdem wollte ich ja nicht alles von dir abkupfern, aber wenn du gewissermaßen drauf "bestehst"... :wink:

NicTheQuick hat geschrieben:@all: Und denkt dran. In Doubles passen die Zahlen nicht so genau rein
wie in Quads.
AND51 hat geschrieben:Allerdings arbeitest du mit Doubles, ist da nicht der Wertebereich etwas beschränkt?
Genau das habe ich mich auch gefragt. Quads gehen bis 2^64 glaub ich. Und wie weit gehen Doubles? In der Hilfe steht im Kapitel "Variablen, Typen, Operatoren", dass der Bereich 'unlimitiert' ist...?!



Ach ja: Es war nur eine Idee von mir, dass man null Nackommastellen erzwingt, wenn die Einheit Byte ist. Muss aber nicht immer so sein.



Noch was: Ich habe es ausprobiert. Bei mir geht das ganze nur bis 8.999.999.999.999.999.999 Bytes, wenn ich 1 Nachommastele will. Gebe ich mehr ein, dann kriege unsinninge Werte (Minuswerte?).
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

die aussage in der Help mit "unlimitiert" ist einfach purer schwachsinn,
darüber habe ich mich schon mehrfach mokiert.

bei einer 64bit Gleitkommazahl (Double) werden 53bit als Mantisse und 11bit als exponent benutzt.
damit ist klar, dass die größte zahl ohne Nachkommastellen nur 2^53-1 sein kann,
im gegensatz zu 64bit Ganzzahl (Quad), wo es 2^64-1 ist.
jede zahl die größer wird, beginnt in vorkommastellen ungenau zu werden.
zuerst nur in der 1er-stelle, dann in der 10er-stelle, und irgendwann
bekommt man ne menge Nullen zwischen signifikanten stellen und komma,
dass am ende nicht einmal mehr veränderungen um millionen registriert werden können.

Code: Alles auswählen

Q.q = 1234567890123456789 
D.d = 1234567890123456789
Debug Q
Debug d
q+1
d+1
Debug Q
Debug d
q+1
d+1
Debug Q
Debug d
q+1
d+1
Debug Q
Debug d
daraus wird klar, dass die genauigkeit im nachkommastellenbereich dementsprechend früher kommt.

jede gleitkommazahl hat eine so hohe genauigkeit, sprich, so viele signifikante stellen,
wie die größe der Mantisse ermöglicht.

darüber hinaus ist auch bei höchster ungenauigkeit der Wertebereich nicht unbegrenzt,
denn irgendwann ist auch der exponent voll.

bei float liegt der positive Wertebereich im bereich zwischen 3.4*10^38 und 1,175*10^-38.
das bedeutet, zahlen die größer oder kleiner sind, können nicht als floats gespeichert werden.
bei double ist er dementsprechend größer, aber keinesfalls unbegrenzt.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Little John

Beitrag von Little John »

Es ist noch nicht perfekt. ;)
Als Abkürzungen für die Einheiten sollten nach Maßgabe des Internationalen Büros für Maß und Gewicht (BIPM) nicht KB, MB, GB usw. verwendet werden, sondern KiB, MiB, GiB usw., siehe Wikipedia => Byte.

Gruß, Little John
Zuletzt geändert von Little John am 12.10.2006 12:51, insgesamt 1-mal geändert.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

@Little John:
Das war die Idee irgendeines Komikers, der meint, dass man nach jahrzehntelanger Arbeit mit KB (2^10), MB (2^20), usw., das ganze einfach
abändern könnte, weil es nicht den mathematischen Größen entspreche, aber
genauso heiße.
Ich werde nicht sowas albernes wie Kibibyte, MebiByte, usw. verwenden. Das
klingt blöd und ich kenne noch niemanden, der das so verwendet. Die
meisten werden dann gar nicht verstehen, was das soll, weil es jeder als
Kilobyte und Megabyte kennt.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

@Little John

wir wissen davon.

ich persönlich lehne es unter der bezeichnung "an der realität vorbei" ab.

http://www.purebasic.fr/german/viewtopi ... 964#115964

deswegen erlaube mir bitte, dass ich deine aussage
> sollten korrekterweise
nicht als gegeben hinnehme.
'korrekterweise sollte' die zuständige Kommission keinen soliden Schwachsinn proklamieren.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
helpy
Beiträge: 636
Registriert: 29.08.2004 13:29

Beitrag von helpy »

Kaeru Gaman hat geschrieben:'korrekterweise sollte' die zuständige Kommission keinen soliden Schwachsinn proklamieren.
:-) ... und daran hält sie nun schon seit 6 Jahren fest. Die IEC Norm gibt es ja seit Ende 1999.

Nachteil: In der Industrie wird es teilweise umgesetzt, teilweise aber auch nicht ... und das führt beim Anwender eher zu Verwirrungen.

Naja, was solls ... vielleicht wird uns ja noch mal per Gesetz vorgeschrieben die "neue" Norm verwenden zu müssen.
Windows 10
PB Last Final / (Sometimes testing Beta versions)
Little John

Beitrag von Little John »

Kaeru Gaman hat geschrieben:@Little John

wir wissen davon.

ich persönlich lehne es unter der bezeichnung "an der realität vorbei" ab.

http://www.purebasic.fr/german/viewtopi ... 964#115964

deswegen erlaube mir bitte, dass ich deine aussage
> sollten korrekterweise
nicht als gegeben hinnehme.
'korrekterweise sollte' die zuständige Kommission keinen soliden Schwachsinn proklamieren.
OK, ich habe jetzt
korrekterweise
ersetzt durch
nach Maßgabe des Internationalen Büros für Maß und Gewicht (BIPM)
Das ist sachlich richtig, oder?

2NicTheQuick:
An einer Diskussion, ob es sich bei den betr. Damen und/oder Herren um Komiker handelt oder nicht, möchte ich mich nur ungern beteiligen. ;)

Gruß, Little John
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

Die Gedanken sind frei, wer kann sie erraten?
Sie fliegen vorbei, wie nächtliche Schatten.
Kein Mensch kann sie wissen, kein Jäger sie schießen
mit Pulver und Blei, die Gedanken sind frei.

Ich denke, was ich will und was mich beglücket,
doch alles in der Still' und wie es sich schicket.
Mein Wunsch, mein Begehren kann niemand verwehren,
es bleibet dabei: Die Gedanken sind frei!

Und sperrt man mich ein im finsteren Kerker,
Ich spotte der Pein und menschlicher Werke.
denn meine Gedanken zerreißen die Schranken
und Mauern entzwei: Die Gedanken sind frei.

Drum will ich auf immer den Sorgen entsagen
und will dich auch nimmer mit Grillen mehr plagen.
Man kann ja im Herzen, stets lachen und scherzen
und denken dabei: Die Gedanken sind frei.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Aus der fernsehwerbung von GMX... Haha, ich hab's erraten.

Aber, auch wenn unsere Prozeduren hier nur bis 2,6 oder 8,6 (weiß nemma) PetaByte gehen, sollte das für den Heimanwender reichen. Wenn sich ne Wetterstaion bei uns meldet, können wir den Bereich ja immer noch erweitern :wink:
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

AND51 hat geschrieben:Aus der fernsehwerbung von GMX... Haha, ich hab's erraten.
über 200 jahre älter, und unter den Nazis verboten, aber wie du meinst... ;)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten