[C/C++] Bereich von Gleitkommavariable einschränken

Hallo zusammen,

ist es möglich den Bereich einer Gleitkommavariablen z.B. auf Positive Zahlen zu begrenzen? 'unsigned' geht ja nur bei Integer!?

Danke im Voraus!
 
if(fZahl<0) {
printf("%s","Error"); //als Beispiel
a=0;
}
oder wenn du Zahlenausgabe mit Nachkommastellen einschränken willst

float fZahl=1,234567;
printf("%.3f",fZahl);

gibt die Variable mit fZahl mit drei Stellen nach dem Komma aus
Was willst du überhaupt machen
 
Der Wertebereich einer Gleitkommazahl ist hardwäremäßig beschränkt, da kannst du nichts dran ändern.
Du kannst aber natürlich verhindern, dass jemand eine negative Zahl eingibt

eine andere möglichkeit, ist die Funktion "double fabs(double a)" zu benutzen, die dir den Betrag einer Gleitkomazahl zurückgibt.
 
Original von Heinzelotto
Der Wertebereich einer Gleitkommazahl ist hardwäremäßig beschränkt, da kannst du nichts dran ändern.

ist mir schon klar^^ ich wollte eine double variable nur für positive zahlen begrenzen, also das sie als kleinsten Wert NULL enthalten kann. jemand ne idee dazu?
 
geht nicht. Wäre eine Klasse, in der zur jeder Zahl ein sogenannter Exzess dazugerechnet wird, eine Möglichkeit?
Exzess bedeutet, der Wertebereich wird verschoben, sodass du statt z.B. mit einem Datentyp mit einem Wertebereich von -4 bis 4 von 0 bis 8 rechnen kannst. der exzess wäre -4 beim kodieren und +4 beim dekodieren. Wenn du also eine 0 speichern wolltest, rechnet deine Klasse den kodierexzess (-4) dazu und speichert die Zahl intern als -4. Bei einer 8 (die ja eigentlich nicht in unserem angenommenen Wertebereich liegen würde (der ist ja -4 bis +4)) wird dann nach hinzurechnen des exzesses eine 4 und es passt.
Da das Float format aber grundsätzlich anders funktioniert (einfach mal nach "ieee 754" googeln), ist das ohne bitweise veränderung einer floating point zahl nicht so ohne weiteres möglich.
Was du auch noch machen könntest, wäre statt double einen long double zu benutzen, aber der erhöht afair nur die Genauigkeit, und nicht den Wertebereich.
 
Zurück
Oben