double kürzen bzw. ohne kommastellen



  • hallo, ich hab da mal ne kleine frage. wie kann ich nen double so kürzen, dass er keine zeichen nach dem komma anzeigt?
    ich hab da das schachbrett-könig teil programmiert, also auf jedem feld die doppelte menge reiskörner 😃
    nur leider gibt der mir folgendes aus:
    Auf Feld 1.000000 liegen 1.000000 Körner. Nun will ich aber, dass der nur "Auf Feld 1 liegen 1 Körner" ausgibt. Nen integer oder so kann ich ja leider nicht nehmen, da die zahl recht gross wird 😞

    hier mal der code.

    void main(void)
    {
    	double start_anzahl = 1;
    	double max_felder = 64;
    	double i;
    
    	for(i = 1; i <= max_felder; i++){
    		printf("Auf Feld %lf liegen %lf Koerner!\n",i, start_anzahl);
    		start_anzahl*= 2;
    	}
    	system("pause");
    }
    

    danke schonmal im voraus.

    gruss



  • Also für die Felderzahl (i) reicht ein int auf jeden Fall aus. Und für die Ausgabe der double-Werte probier's mal mit der Angabe "%.0lf" (Präzision (Nachkommastellen) = 0).

    (PS: C ist eine Etage höher)



  • hehe es is aber ned C 😛
    hab nur printf genommen um das teil zu testen 😉 is ne .cpp datei

    naja, wenn ich nen int nehm bei einer zahl, dann gibt er mir nur 0 aus und das ist auch nicht so richtig 😞
    das mit dem kürzen versuch ich eben mal.

    greetz



  • Wenn du einen int-Wert mit "%lf" ausgeben willst, dürfte sowieso nur Müll entstehen - deswegen verwendet man in C++ auch IO-Streams für so etwas (die wissen zur Compilezeit, was für ein Typ ankommt und wie sie ihn verarbeiten müssen):

    int main(void) // btw, "void main()" ist Unsinn
    {
        double start_anzahl = 1;
        int max_felder = 64;
        cout<<setprecision(0)<<noshowpoint;//Ausgabe anpassen
    
        for(int i = 1; i <= max_felder; i++){
            cout<<"Auf Feld "<<i<<" liegen "<<start_anzahl<<" Körner.\n";
            start_anzahl*= 2;
        }
        //system("pause");
        cin.get();
    }
    


  • hm okee, ich merks mir. danke vielmals 😉

    gruss


Anmelden zum Antworten