2012-06-22 2 views
0

을 정확하지 사용 int로 다음C++는 내가 좋아하는 뭔가를 시도하고 이제 stringstream은

stringstream convert1(Model_str.substr(2, 12)); 
cout << (Model_str.substr(2, 12)) << endl; //output = 0.999999 
convert1>>vertex1[VertexCounter]; 
cout << vertex1[VertexCounter] << endl; //output = 0 

내 배열로 배치 때 6 소수점 자리까지 정확하지 않을 이유가 있나요?

+2

절단, 절단, 잘라 내기. – chris

+2

정확하게 당신이 * 기대하는 * int는 무엇입니까? –

+0

나는 두 개의 출력이 같기를 바랬다. 따라서 정점 [VertexCounter]은 0.999999이어야합니다. – LucasS

답변

2

>>이있는 스트림에서 int을 추출하면 int의 일부로 간주 될 수있는 문자가있는 한 읽습니다. 정수는 소수 부분을 허용하지 않으므로 int 값에는 소수점이 없습니다. 스트림에서 0을 읽고 vertex1 배열 요소에 저장하고 (vertex1int의 배열 임) 나중에 읽는 연산을 위해 입력 버퍼의 나머지 문자를 남겨 둡니다.

당신이 스트림에서 부동 소수점 문자열을 읽으려면

, 같은 float 또는 double 같은 부동 소수점 값을 지원하는 형식으로 읽을 수있는 적어도 필요에 따라 당신. 당신이 기대 한 정확한 가치를 얻는 것이 또 다른 문제입니다. 선택한 목표 유형이 원하는 정확한 값을 나타내지 못할 수도 있습니다.

+0

아, 고마워. int 대신 double을 사용하여 고정. 그걸 정리 해줘서 고마워. :) – LucasS

관련 문제