Probleme mit Datenumwandlung

untread

Erfahrenes Mitglied
Hi,

hab leider ein Problem mit der Datenkonvertierung:

Ich selektiere HEX Werte aus einer Textdatei und zwar die sel5 und sel6 .
Jetzt wandle ich diese in eine Integer Zahl um.
die Zahl itemp[j] und die Zahl itempkomma[j] sollen zum ergebnis temperatur[j] zusammengefügt werden.

eigentlich sollt das Ergebnis vom Typ float sein jedoch gibt er mir da eine 0 aus wenn ich schreibe
Code:
temperatur[j] = itemp[i]+itempkomma[j]*1/10000;
wenn ich temperatur[i] als int definiere dann addiert er mir die Zahl richtig aber ohne Kommastellen.

wäre nett wenn man mich auf den Fehler aufmerksam machen könnte


mit freundlichen Grüßen
Harry



Code:
// Werte aus Textdatei einlesen
	CStdioFile file("datei.txt",CFile::modeRead); 

    CString temp = _T(""); 
    CString str = _T("");
   	int j=0;
	int max=0;
	float temperatur[100];
	float gesamt=0;
	float durchschnitt=0; // Durchschnittswert
	float minimum=100000; // Minmum Wert
	float maximum=-100000; // Maximum Wert
	int itemp[1000];
	int itempkomma[1000];
	char ctemp[20];
	char ctempkomma[20];
	

	while(file.ReadString(temp) != NULL) 
    {
		int n1 = temp.Find("|",0);
		int n2 = temp.Find("|",n1+1);
		int n3 = temp.Find("|",n2+1);
		int n4 = temp.Find("|",n3+1);
		int n5 = temp.Find("|",n4+1);
		int n6 = temp.Find("|",n5+1);
		int n7 = temp.Find("|",n6+1);
		CString sel1 = temp.Mid(n1+1, n2-1);
		CString sel2 = temp.Mid(n2+1, n3-(n2+1));
		CString sel3 = temp.Mid(n3+1, n4-(n3+1));
		CString sel4 = temp.Mid(n4+1, n5-(n4+1));	
		CString sel5 = temp.Mid(n5+1, n6-(n5+1));	
		CString sel6 = temp.Mid(n6+1, n7-(n6+1));	
		
		sscanf(sel5,"%X",&itemp[j]);
		sprintf(ctemp,"%X",itemp[j]);

		sscanf(sel6,"%X",&itempkomma[j]);
		sprintf(ctempkomma,"%X",itempkomma[j]);
		
		temperatur[j] = itemp[j] + itempkomma[j];

		//gesamt = gesamt + temperatur[j];

		


		// Minimum berechnen
		if(temperatur[j]<=minimum)
		{
			minimum=temperatur[j];
		}

		// Maximum berechnen
		if(temperatur[j]>maximum)
		{
			maximum=temperatur[j];
		}

		j++;
		max=j;

    }
 
oke hat sich erübrigt...hätte die Werte casten müssen...
Code:
temperatur[j] = (float)itemp[j] + (float)itempkomma[j]*1/10000;
 
Zurück