Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Kommazahl

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
01.07.2004, 09:56 Uhr
~Schwabi
Gast


Hallo,
weiss nich so recht wo ich das hinschreiben soll, da es aber mit ANSI Standard zu tun hat schreib das jetz hier mal rein.

Habe folgendes Problem:
Benutze den MFC und will mir eine double Zahl ausgeben lassen, das klappt soweit auch ganz gut.
Wie schaff ich es jetzt aber die Kommastellen abzuschneiden?
Hab hier im Forum schon folgenden Code gefunden:

C++:
    float f=3.141594;
    char fmt[100];
    int n;
    printf("Wie viele Nachkommastellen? [1-10] ");
    scanf("%d", &n);
    sprintf(fmt, "\%%.%df", 3);
    printf(fmt, f);



Der funzt in ner normalen MFC ja auch super. Aber wie bring ich das in meinen Quellcode??



C++:
void CAnalogEingangDlg::Spannung2()
{

    char string[20];
    U_byte variable;
    Controler->PD_In();
    variable.byte = Controler->AnalogerEingang1_121U2;
    variable.byte = variable.byte/1000;                         //hier die double Zahl
    SetDlgItemText(IDC_EDIT4,string);                         //un hier musse hin
}



Ich kann ja hier nun leider nich mehr

C++:
printf(fmt, f);


schreiben.

Kann mir da jemand weiter helfen?????

Gruesse Schwabi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
01.07.2004, 09:57 Uhr
~Schwabi
Gast


Der kopierte Quellcode klappt natuerlich nur in ner normalen cpp.
Sorry, schreibfehler.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
01.07.2004, 11:46 Uhr
KaraHead



da es hier ANSI ist und ich von MFC keine Ahnung hab, hier eine paar ANSI funktionen:


C++:
floor(6.5) //rundet immrt ab und liefert 6 zurück
ceil(6.4) //rundet immer auf und liefert 7 zurück

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
01.07.2004, 12:10 Uhr
Tommix



Hallo,
was ist U_byte für ein Typ? Das klingt mir nicht nach double. Ansonsten:

C++:
double dVar = variable.byte/1000.0;
sprintf (string, "%.0f", dVar); // BTW kein guter Variablenname


Oder, wenn schon MFC, dann
[ot]

C++:
CString str;
str.Format(".0f", variable.byte/1000.0);
SetDlgItemText(IDC_EDIT4, str);


[/ot]
Gruss, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
01.07.2004, 12:15 Uhr
~Schwabi
Gast


Also U_byte ist eine Union, nix weiter. Diese gibt "double" zurrueck.
Ich probier gleich mal den Code, habe aber bedenken das mir das ganze nur 3 Kommastellen anzeigt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
01.07.2004, 12:24 Uhr
~Schwabi
Gast


Jo, also wie schon gesagt, alles schoen und gut.
Aber wie bekomm ich es jetzt noch hin das ich nur 3 Stellen hinter dem Komma angezeigt bekomme.???
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
01.07.2004, 12:28 Uhr
KaraHead



Druckst du hier
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
01.07.2004, 12:50 Uhr
Tommix



Ja, klar:
"%.0f" -> "%.3f"
Du hast oben geschrieben:

Zitat:

Wie schaff ich es jetzt aber die Kommastellen abzuschneiden?


, was eine recht kreative Umschreibung für "Ich will drei Nachkommastellen haben." ist.

Gruss, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
01.07.2004, 13:19 Uhr
~Schwabi
Gast


Ha super, hatte gedacht das hab ich schon probiert. Aber jetzt funzt es, spitze.


Code:
, was eine recht kreative Umschreibung für "Ich will drei Nachkommastellen haben." ist.



So bin ich
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
01.07.2004, 18:14 Uhr
0xdeadbeef
Gott
(Operator)


Warum so umständlich, wenns auch einfach geht?

C++:
#include <math.h>
#include <stdio.h>

int main() {
  int n;

  printf("Wie viele Nachkommastellen? [1-10] ");
  scanf("%d", &n);
  printf("%.*g\n", n, M_PI);

  return 0;
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: