2014-10-25 2 views
0

저는 학교 프로젝트를 진행하고 있으며 텍스트 파일에 부동 번호를 써야합니다. 문제는 파일에 소수점 2 자리까지만 쓸 수 있다는 것입니다. 인터넷에서 많은 부분을 검색했지만 스트림에 대해 "setprecision"기능 만 발견했습니다.플로트 숫자를 반올림하여 텍스트 파일에 쓰려면 소수점 이하 2 자리 숫자로 반올림하십시오.

인쇄하고 싶지 않지만 파일에 소수점 2 자리 만 쓰고 싶기 때문에 인쇄 할 수 없습니다. 그래서 먼저 부동 소수점 숫자를 같은 숫자로 변환해야만하지만 소수점 2 자리 만 있으면 그 문자열을 다른 문자를 포함하고있는 문자열에 넣을 수 있습니다. 그리고 그 문자열을 출력 파일에 씁니다.

"ofstream"의 설명에서 "정밀도"메서드를 찾았지만, 내가하려고하는 것에 대해 작동하지 않을 것이라고 생각합니다. (http://www.cplusplus.com/reference/fstream/ofstream/)

그 일을하는 사람이나 그 일을하는 사람은 누구입니까?

도움 주셔서 감사합니다.

+1

참조 [IO 조작기 (http://en.cppreference.com/w/cpp/io/manip) 특히 ['표준 : setprecision '] (http://en.cppreference.com/w/cpp/io/manip/setprecision). 예제에 유의하십시오. –

+0

파일에 스트림 API가 있습니다. 뭐가 문제 야? 예, 당신이하려는 일에 효과가 있습니다. –

+1

[표준 파일 I/O 조작기] (http://en.cppreference.com/w/cpp/io/manip)를 확인하십시오. –

답변

0

나는 그것을 인쇄하고 싶지 않기 때문에 나는 그것을 할 수 없다. 그러나 단지 2 개의 십진수로 파일에 그것을 쓰고 싶다.

ostreams는 인쇄용이 아닙니다. 과 동일한 작업을 cout처럼 할 수 있습니다.

std::ofstream fout("out.txt"); 

fout << std::setprecision(2) << 1.23456; 

그 기능은 문서의 이름과 내가 원하는 정보의 나머지 부분과 가격이 모두 포함 된 문자열을 만든다. 함수는 해당 문자열을 반환 한 다음 해당 문자열을 출력 파일에 씁니다.

문자열을 다시 가져 오는 대신 ostream 참조를 함수에 전달하여 출력을 작성할 수 있습니다. float을 문자열에 쓸 때 서식을 지정하는 기능을 사용할 수도 있습니다. Ostreams은 파일을 인쇄하거나 기록하지 :

std::stringstream ss; 

ss << std::setprecision(2) << 1.23456; 

std::string s = ss.str(); 
+0

고마워 bames53! 이것은 효과가 있었다. 나는 그런 식으로 시도했지만 stringstream의 "str"메소드를 알지 못했습니다 : – HyperZ

+0

그리고 부동 소수점에 소수점 자리가 얼마나 남아 있는지 모를 경우'std :: setprecision (log10f (x) +3)'x는 전화 번호를 저장합니다. – Tap

관련 문제