Problem mit string
-
hallo,
ich versuche eine zahl immer durch 10 zu teilen und sie dann als string einzulesen, jedoch wird die zahl nach 6 oder 7 schritten als 1 eingelesen obwohl mir cout was anderes sagt. was mache ich falsch?

// programm2.cc #include <sstream> #include <string> #include <iostream> int main () { double x(1); std::string S("0.001"); std::string u("0.1"); int I(1); std::cout.precision( 17 ); while(I!=20) { I=I+1; x=x*0.1; std::ostringstream Str2; Str2 << x+1; std::string S(Str2.str()); std::cout << "S(nachher)=" << S << std::endl; int L=S.length(); std::cout << "Lange=" << S.length() << " x+1=" << x+1 << " I=" << I << " L=" << L << std::endl << std::endl; } std::cout << "Beendet " << "x+1=" << x+1 << u << std::endl; }
-
Du brauchst den
.precision-Aufruf auch aufStr2bevor Du x+1 in den Stringstream reinschreibst.
-
wie füge ich den ein? ich versteh was du meinst, kanns aber nicht umsetzen

-
TGGC schrieb:
cppnewb schrieb:
wie füge ich den ein? ich versteh was du meinst, kanns aber nicht umsetzen

In das *.cpp eintippen. f'`8k
Gruß, TGGC (Was Gamestar sagt...)
schon klar, aber was? was muss ich for .precision schreiben? mit cout klappts nicht...
-
cppnewb schrieb:
TGGC schrieb:
cppnewb schrieb:
wie füge ich den ein? ich versteh was du meinst, kanns aber nicht umsetzen

In das *.cpp eintippen. f'`8k
Gruß, TGGC (Was Gamestar sagt...)
schon klar, aber was? was muss ich for .precision schreiben? mit cout klappts nicht...
doch, es klappt mit cout.
rtfm: http://www.cplusplus.com/reference/iostream/ios_base/precision/bb
-
// programm2.cc #include <sstream> #include <string> #include <iostream> #include <iomanip> #include<ios> int main () { double x(1); std::string S("0.001"); std::string u("0.1"); int I(1); std::cout.precision( 20 ); std::setprecision(20); while(I!=20) { I=I+1; x=x*0.1; std::setprecision(20); std::cout.precision(20); std::ostringstream Str2; Str2 << x+1 << std::setprecision(20); std::string S(Str2.str()); int L=S.length(); if(x+1==1){ std::cout << "Fertig! mit x=" << x << std::endl; } std::cout << "S(nachher)=" << S << std::endl; std::cout << "Lange=" << S.length() << " x+1=" << x+1 << " I=" << I << " L=" << L << std::endl << std::endl; } std::cout << "Beendet " << "x+1=" << x+1 << std::endl; }nö klappt immer noch nicht. nach dem 7. durchlauf spuckt er mir als Länge des strings 1 aus...
-
xD
rtfm!!!!!#include <sstream> #include <string> #include <iostream> #include <iomanip> int main() { double x = 1; std::cout.precision(20); for(int i = 1; i != 30; ++i) { x /= 10; if(x == 0) break; std::ostringstream ss; ss << std::setprecision(20) << x+1; std::string S(ss.str()); std::cout << "S = \t" << S << std::endl << "\tLaenge=\t" << S.length() << std::endl << "\tx+1 = \t" << x+1 << std::endl << "\ti = \t" << i << std::endl << std::endl << std::endl; } std::cout << "Beendet " << "x+1=" << x+1 << std::endl; }geht nicht?
bb
-
nicht aufregen, bin mit der syntax von c++ noch nicht vertraut :p
danke klappt jetzt
-
cppnewb schrieb:
nicht aufregen, bin mit der syntax von c++ noch nicht vertraut
da waren noch ganz andere schnitzer drin als nur syntaktische...