CString zu Double und wieder zurück Konvertieren, wie?
-
Wie kann ich meine CStrings zu Doubles Konvertieren und die Doubles nach einer berechnung wieder zu CStrings??
-
Double to CString:
CString csMyString; double dMyDouble = WASAUCHIMMER; csMyString.Format("%d", dMyDouble);Das andere kann ich dir nicht genau sagen. Ich hab das mal für Unsigned Double versucht. Das so in etwa so aus (geht sicher besser):
bool IsNumber(CString csNumber) { for(int nI = 0; nI < csNumber.GetLength(); nI++) { if(csNumber[nI] > 0x39 || csNumber[nI] < 0x30) return(false); } return(true); } double CStringToUnsignedDouble(CString csToUnsignedDouble) { CString csVormKomma, csNachKomma; int nKomma = -1; double dReturn = -1; nKomma = csToUnsignedDouble.Find('.'); if(nKomma < 0) { nKomma = csToUnsignedDouble.Find(','); if(nKomma < 0) return(IsNumber(csToUnsignedDouble) ? (double)_ttoi((LPCTSTR)csToUnsignedDouble) : -1); } csVormKomma = csToUnsignedDouble.Left(nKomma); csNachKomma = csToUnsignedDouble.Right(csToUnsignedDouble.GetLength()-1-nKomma); if(!IsNumber(csVormKomma) || (!csNachKomma.IsEmpty() && !IsNumber(csNachKomma))) // sind beides nummer? return(-1); dReturn = (double)_ttoi((LPCTSTR)csVormKomma); dReturn += (double)_ttoi((LPCTSTR)csNachKomma) / (double)(pow(10, csNachKomma.GetLength())); return((double)(int)(dReturn * 100) / 100.0f); }Also funktionieren tuht das aber wäre cool wenn jemand das noch besser hat mit signed double *auch such*
-
Ach wennde es mit signened double schnell brauchst such als ersten im String noch nach einen '-' und wenn Du eins findest machst du am Ende einfach *(-1)...
...ach ich weiß garnicht mehr viel viele Stellen nach dem Komma die Funktion kann...*grad wenig zeit* mußt selber mal schaun
-
double b; CString a = "12,3456" b = atof(a);