2017-08-31 1 views
-1

Ich spielte gerade mit Datentypen und landete auf diesem Dilemma. Kann jemand hier erklären mir den GrundWarum druckt dieses Programm "Ja" als Ausgabe?

#include<iostream> 
using namespace std; 

int main() { 

    float a= 0.7; 
    if(a < 0.7) 
     cout<<"Yes"; 
    else 
     cout<<"No"; 
    return 0; 
} 

Ich weiß, es liegt daran, dass automatisch 0,7 als wörtliche Doppel sein wird.

#include<iostream> 
using namespace std; 
int main(){ 

    float a= 0.8; 
    if(a < 0.8) 
    cout<<"Yes"; 
    else 
    cout<<"No"; 
    return 0; 
} 
+1

Weil 0.7 nicht genau als binäre Fließkommazahl dargestellt werden kann. –

+0

Und was * ist * dein "Dilemma"? Was ist das Problem mit dem Code, den du zeigst? Was ist die tatsächliche und erwartete Ausgabe? Bitte lege all das * in den Körper der Frage *, der Titel sollte nur eine kurze Zusammenfassung der Frage im Körper sein. Bitte [lesen Sie, wie Sie gute Fragen stellen können] (http://stackoverflow.com/help/how-to-ask), falls Sie es nicht schon getan haben. –

+0

https://StackOverflow.com/q/7011184/995714 https://StackOverflow.com/q/6883306/995714 https://StackOverflow.com/q/16698198/995714 –

Antwort

1

0.7 hat keine genaue Darstellung als float. Die ungefähre float ist ein bisschen weniger als die double Darstellung von 0.7 (die die Standardinterpretation ist, wenn sie als eine Konstante in der if Anweisung verwendet wird).

Weitere Informationen dazu finden Sie in der Frage nach doppelten oder den unzähligen Variationen in den Kommentaren.

Verwandte Themen