4 Stimmen

cout druckt "-0" anstelle von "0"

#include <iostream>
using namespace std;

int main()
{
    double u = 0;
    double w = -u;
    cout << w << endl;
    return 0;
}

Warum gibt dieses großartige Stück Code -0 und nicht 0 wie man es erwarten würde?

0 Stimmen

Ein wenig mehr Kontext wäre wünschenswert (z. B. der verwendete Compiler)

0 Stimmen

Großartiger C++-Code kann keine using namespace std; .

13voto

foxxtrot Punkte 10954

Nach dem IEEE-754-Standard für Gleitkommazahlen ist das Vorzeichenbit von der Mantisse getrennt, so dass die Null auch negativ sein kann. Wikipedia sollte dies erklären können.

2voto

Doug T. Punkte 61739

In IEEE Gleitkomma 0 y -0 sind beide unterschiedliche Werte, von aquí unter "Besondere Werte":

Beachten Sie, dass -0 und +0 unterschiedlich sind. Werte sind, obwohl sie beide als gleich.

2voto

Drealmer Punkte 5398

Die Norm IEEE 754 für die Gleitkommaarithmetik unterscheidet zwischen +0 y -0 Dies kann verwendet werden, wenn es sich um sehr kleine, auf Null gerundete Zahlen handelt, bei denen das Vorzeichen noch eine Rolle spielt.

1voto

Clinton Pierce Punkte 12309

Denn "negative Null" ist eine gültige Zahl!

http://en.wikipedia.org/wiki/%E2%88%920_(Nummer)

1voto

Trent Punkte 12681

Werfen Sie einen Blick auf diesen Artikel: http://en.wikipedia.org/wiki/Floating_point . Beachten Sie, dass ein Vorzeichenbit vorhanden ist, auch wenn der Wert Null ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X