Wertebereiche vergrößern
Wertebereiche vergrößern
Hallo zusammen!
Ich habe gerade ein kleines Problem und weiß keine Lösung.
Ich benutze diverse Spinboxen, die Variableninhalte repräsentieren. Natürlich soll der Wertebereich der Spinbox auch den der Variablen wiederspiegeln. Jetzt habe ich aber festgestellt, dass selbst eine DoubleSpinBox nur von -(2^32)/2 bis (2^32)/2-1, also signed 32 Bit geht. Jetzt kann es aber theoretisch vorkommen, dass die Variablen auch U32 oder gar [SU]64 sind. Wie kann ich das denn darstellen?
(Qt 4.6, Windows XP 32Bit)
michai
Ich habe gerade ein kleines Problem und weiß keine Lösung.
Ich benutze diverse Spinboxen, die Variableninhalte repräsentieren. Natürlich soll der Wertebereich der Spinbox auch den der Variablen wiederspiegeln. Jetzt habe ich aber festgestellt, dass selbst eine DoubleSpinBox nur von -(2^32)/2 bis (2^32)/2-1, also signed 32 Bit geht. Jetzt kann es aber theoretisch vorkommen, dass die Variablen auch U32 oder gar [SU]64 sind. Wie kann ich das denn darstellen?
(Qt 4.6, Windows XP 32Bit)
michai
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Mir geht es nicht um die Schrittweite. Zumal ich ja vielleicht auch 2 Milliarden per Tastatur eingeben und dann +/- ein paar Schritte nachjustieren möchte.Christian81 hat geschrieben:Einfach einen kleineren Bereich in der QSpinbox nehmen und dann selbst rechnen. 2 Millarden Spinnbox-Schrittchen machen nun wirklich keinen Sinn.
Was ich meine ist der darstellbare Bereich bzw. die Werte, die ich per setMinimum() und setMaximum() festlegen kann.
Wieso 2^40?upsala hat geschrieben:Nachdem hier 2^40 kein Problem sind, frag ich mich wie du auf diese Grenze kommst.
Folgendermaßen: Ich habe Code geschrieben, um z.B. das Maximum einer QSpinbox per setMaximum()-Methode in Abhängigkeit des Datentypes zu setzen (per switch... case). Also für U8 -> (2^8 )-1. Für S16 -> (2^16)/2-1. Usw.
Bis S32 ist auch noch alles gut, aber die Werte von U32, S64 und U64 waren nach (!) meinem setzen alle identisch mit denen vom S32. Und es ist kein Programmierfehler.
Die 64-Bitter sind eigentlich fast egal. Da kann ich auch drauf verzichten. Aber einen unsigned 32 würde ich schon gern korrekt darstellen.
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
double hat doch eine Mantisse von 52 oder?
Also:
Zugegeben:im Property-Editor meines Designers (auf diesem System Qt 4.5.3) kann ich allerdings das Maximum nicht über 2^31 - 1 setzen. Im Code wie oben geht's aber..
hth..
Also:
Code: Alles auswählen
int main(int argc, char *argv[])
{
QApplication app(argc,argv);
QDoubleSpinBox b;
b.setMinimum(0);
b.setMaximum(4503599627370495.0); // 2^52 - 1
b.show();
return app.exec();
}
hth..