Jag har ett decimaltal som jag vill få avrundat till endast två decimaler. cout.setf(ios::fixed); setprecision fungerar i VC++ men det är lite klurigt att få att fungera ibland. Tror det beror på vilka include filer man använder. Finns det någon som avrundat ett decimaltal till två decimaler i VC++ någon gång som kan visa hur man gör? Det här fungerar för mig i vc6 Grejjen är den att jag skall tilldela en EDIT box med variabeln m_fltTotal av typen float kopplad till sig. m_fltTotal = fltTotalSum; >tilldela en EDIT box med variabeln m_fltTotal av typen float kopplad till sig. Har hittat en lösning som fungerar tillfredställande. Den är inte bra i längden. Du tappar precision för tal om du skulle behöva dem senare, och den fungerar inte för tal över 2^31. Varför använda UpdateData? Det är mycket lättare att använda "control variables" (läs t.ex. http://www.flounder.com/updatedata.htm)setprecision(n); eller annan funktion?
I Standard C++ används ju setprecision(2); för detta men hur gör jag i VC++ miljön?
Får inte setprecision() att funka där.
TackSv: setprecision(n); eller annan funktion?
cout.precision(2);
får jag att funka iafSv: setprecision(n); eller annan funktion?
Sv: setprecision(n); eller annan funktion?
Sv: setprecision(n); eller annan funktion?
#include "stdafx.h"
#include "iostream"
#include "iomanip"
int main(int argc, char* argv[]) {
std::cout << std::fixed << std::setprecision(2) << 3.1415926 << std::endl;
return 0;
}Sv: setprecision(n); eller annan funktion?
Sedan kör jag... UpdateData(FALSE);
Det är alltså ingen consolprogrammering för där kan jag utföra det hela.Sv: setprecision(n); eller annan funktion?
Vad betyder det?
Är m_fltTotal av typen float, och du vill tilldela denna medlemsvariabel ett floatvärde?
Sen skall du kunna få ut detta floatvärde till textboxen genom att omvandla det till en sträng?
Det är väl CString som används, va?
Kan inte den så bra, men jag antar att det finns någon funktion som omvandlar char-arrayer till CStrings?
Då kan du använda stringstream iställlet. Stringstream används på samma sätt som cin och cout.Sv: setprecision(n); eller annan funktion?
void CClass::Funktion(float fltTotRate)
{
float fltTR = fltTotRate;
long lTmp = (long)100*fltTR;
fltTR = lTmp/100.0;
m_fltTotalSum = fltTR;
UpdateData(FALSE);
}Sv: setprecision(n); eller annan funktion?
Sv: setprecision(n); eller annan funktion?
Då kan du göra så här:
CString flt;
flt.Format("%.2f", fltTotRate);
mEditBox.SetWindowText(flt);
eller om du föredrar std:
std::ostringstream flt;
flt << std::fixed << std::setprecision(2) << fltTotRate << std::ends;
mEditBox.SetWindowText(flt.str().c_str());