Befehl für Maximum Reduzierung ?



  • Hi,

    gibt es einen universellen Befehl (also für MFC, STL, native C++), der einen Wert ungefähr so reduziert:

    Eingabe: int 2 Milliarden, mit Maximum unsigned Integer mit 4 Milliarden Zahlen
    Ausgabe: int 127 , mit Maximum byte 255

    also eine Funktion in etwa: int GetReduced(int input, int inputmax, int outputmax)

    Grüße
    thenoname



  • ? Den Max. Wert für einen Datentyp erhälst du per std::numeric_limits-Template, falls du das brauchst ...

    std::numeric_limits<unsigned int>::max()
    

    .



  • Jo, ich kenn da noch INT_MAX, UINT_MAX etc.
    Es soll aber unabhängig vom Beispiel hier auch mit z.B. 123456 als Maximum arbeiten können.

    dann müsste ich aber immer noch eine eigene Routine zum prozentualen Abgleich
    schreiben. Diese "könnte" jedoch nicht so perfekt sein, wie bereits bestehende Routinen.
    Ich denke da an Berrechnung mit Kommazahlen.
    Aus anderen Sprachen kenne ich jedoch solche Makrofunktionen wie oben beschrieben,
    also müsst es das auch in c++ geben 😉



  • Hallo

    Nein einen solchen "Befehl" (Es gibt keine Befehle in C++! Nur Makros und Funktionen) gibt es in C++ nicht. Ist auch kein Verlust denn so eine Funktion kannst du wie du schon selber geschrieben hast schnell selber schreiben. Über die Genauigkeit im Nachkommabereich brauchst du dir auch keine Sorgen machen da du zum Schluß eh einen Ganzzahlwert raushaben willst.

    bis bald
    akari



  • Hi,

    das mit der Genauigkeit klingt gut.
    Wie ist das mit einem +0.5 für eine korrekte Rundung ?
    Muss ich z.B. bei einem unsigned int mit vollen 4 Byte mit einem
    double Wert rechnen ? Ich denke ein Double hat mehr Stellen als ein uint
    und verkraftet auch noch ein paar Nachkommastellen bei 4294967296 ?

    Gruß
    thenoname


Anmelden zum Antworten