2017-10-30 1 views
4

Ich schreibe ein Programm, um ein Plinko Board zu simulieren, und innerhalb dieses Programms habe ich eine Funktion, die das Geld ausgibt, das jedem Slot zugewiesen ist. Ich versuche, std :: fixed und std :: setprecision zu verwenden, um jeden Wert mit zwei Nullen nach der Dezimalstelle auszugeben, aber jeder Wert wird ausgegeben, als ob ich überhaupt nicht repariert hätte. Was vermisse ich? Hier ist mein Code:Was fehlt mir bei der Verwendung von std :: fixed?

#include <iostream> 
#include <iomanip> 

using namespace std; 

void ChipsAllSlots(int numChips) { 
    const int NUM_SLOTS = 9; 
    const int slotWinnings[NUM_SLOTS] = {100, 500, 1000, 0, 10000, 0, 1000, 500, 100}; 

    for (int i = 0; i < numChips; ++i) { 
     cout << fixed << setprecision(2) << slotWinnings[i] << endl; 
    } 
} 

int main() { 
    ChipsAllSlots(9); 
    return 0; 
} 
+0

'slotWinnings []' hat den Typ 'int'. 'fixed' und' setprecision() 'werden bei der Ausgabe von' int'-Werten nicht berücksichtigt. Wenn Sie einen Dezimalpunkt und zwei 0 Ziffern wünschen, drucken Sie einfach ".00" '. – Scheff

Antwort

6

std::fixed und std::setprecision nur die Ausgabe von Gleitkommazahlen beeinflussen. Sie geben Ganzzahlen aus, so dass diese Manipulatoren keine Wirkung haben. Wenn Sie vor dem Einfügen in den Stream in Fließkommazahl konvertieren oder ein Array mit Fließkommawerten verwenden, sehen Sie zuerst die .00, die Ihnen fehlt.

+0

Sehen Sie, ich wusste, dass ich so etwas dummes vermisste. Ich danke dir sehr!! – Jake

+3

@Jake Wenn es half, bitte betrachten [akzeptieren] (https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) als Antwort. – Ron

Verwandte Themen