Ich weiß, die Frage scheint seltsam zu sein. Programmierer denken manchmal zu viel. Bitte lesen Sie weiter ...
In CI verwenden signed
und unsigned
ganze Zahlen viel. Ich mag die Tatsache, dass der Compiler mich warnt, wenn ich einer vorzeichenlosen Variablen eine vorzeichenbehaftete Ganzzahl zuweise. Ich erhalte Warnungen, wenn ich vorzeichenbehaftete mit vorzeichenlosen Ganzzahlen vergleiche und vieles mehr.
Ich mag diese Warnungen. Sie helfen mir, meinen Code korrekt zu halten.
Warum haben wir nicht den gleichen Luxus für Schwimmer? Eine Quadratwurzel wird definitiv niemals eine negative Zahl zurückgeben. Es gibt auch andere Stellen, an denen ein negativer Float-Wert keine Bedeutung hat. Perfekter Kandidat für einen nicht signierten Wagen.
Übrigens - ich bin nicht wirklich begeistert von der zusätzlichen Präzision, die ich durch Entfernen des Vorzeichenbits von den Schwimmern erzielen könnte. Ich bin super glücklich mit float
s, wie sie gerade sind. Ich möchte einen Float nur manchmal als nicht signiert markieren und die gleichen Warnungen erhalten, die ich mit ganzen Zahlen erhalte.
Mir ist keine Programmiersprache bekannt, die vorzeichenlose Gleitkommazahlen unterstützt.
Irgendeine Idee, warum sie nicht existieren?
BEARBEITEN:
Ich weiß, dass die x87-FPU keine Anweisungen zum Umgang mit nicht signierten Floats hat. Verwenden wir einfach die signierten Float-Anweisungen. Missbrauch (z. B. unter Null) kann als undefiniertes Verhalten angesehen werden, genauso wie der Überlauf von vorzeichenbehafteten Ganzzahlen undefiniert ist.