2016-08-09 6 views
-1

Also versuche ich mich wieder an C++ und ich schreibe eine Funktion, die immer den falschen Wert gibt.C++ doppelte Rückgabe einer 0 anstelle von 0,1

Ich habe es auf eine Linie im Grunde gekocht: double testD = (10/100); das gibt mir 0 statt 0,1.

Ich habe etwas Wichtiges verpasst, aber ich dachte, Doppel-Dezimalwerte gehalten? Für das Leben von mir kann ich das nicht richtig machen.

Bitte helfen Sie mir (auch wenn ich schrecklich dumm bin).

+0

Versuchen Sie '10.0/100'. – songyuanyao

+0

Das könnte funktionieren, aber wie gesagt "eingekocht". Die 10 in dieser Gleichung ist tatsächlich target.getMagicDef() aus einer Klasse, die einen ganzzahligen Wert von 10 zurückgibt. – Mowen

+0

Dann 'static_cast (10)/100'. – songyuanyao

Antwort

0

10 und 100 sind ganze Zahlen. Dies führt zu einer ganzzahligen Division, die zu 0 ausgewertet wird. Das 0 wird dann in testD gespeichert.

Um die Gleitkommadivision zu erzwingen, geben Sie eine der Zahlen ein, um zu floaten oder zu verdoppeln.

((double)whatever)/something 
+0

Gibt es eine elegante Möglichkeit, einem zurückgegebenen Ganzzahlwert .0 hinzuzufügen? – Mowen

+0

Ich habe meine Antwort bearbeitet. Wirf es einfach auf das Doppelte. –

Verwandte Themen