큰 값을 읽어오거나 파일로 쓰려면 어떻게 해야하나요?
글쓴이: ktlsu1231 / 작성시간: 화, 2004/04/27 - 12:39오후
Quote:
0.985459 3.42E-07 0.00711861 0.0131221 0.00358045 0.000269459 4.81E-05 0.00107752
1.77E-05 0.984542 0.00574365 0.000188079 3.31E-06 0.00336054 0.0110688 0.00109913
0.00200072 0.00237169 0.983314 0.00391201 1.42E-05 7.63E-07 0.00506869 0.000634359
연산된 출력값인데 파일에 저장을한 후에 나중에 다시 읽어오려고 합니다.
헌데 아래와 같이 파일에 입력이 되는 것들이 있습니다.
Quote:
111835596048154550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000
코드는 아래와 같습니다. %f 로 출력을 했는데 위와 같이 되는 녀석이
있네요.
int MPerceptron::writeWeightEpoch(int epochCount) { FILE *fp; if((fp=fopen("./EpochWeightData.txt","w"))==NULL) {cout << "꿱=========="<<endl;return 0;} fprintf(fp, "%d\n", epochCount); //EpochCount for(int nodeNo=0; nodeNo< outputLayerNodE; nodeNo++){ //getHOweight for(int nodeNo1=0; nodeNo1< hiddenLayerNodE; nodeNo1++){ fprintf(fp, "%f\n", getHOweight(nodeNo, nodeNo1)); } fprintf(fp, "\n"); } fprintf(fp, "\n"); for(nodeNo=0; nodeNo< hiddenLayerNodE; nodeNo++){ //getIHweight for(int nodeNo1=0; nodeNo1< inputLayerNodE; nodeNo1++){ fprintf(fp, "%f\n", getIHweight(nodeNo, nodeNo1)); } fprintf(fp, "\n"); } fclose(fp); return 1; }
이렇게 롸이트 되면 나중에 읽어올 때도 문제가 될 것 같아서 어떻게 해야 좋을지 모르겠습니다.
도와주세요. ^^;
Forums:
흐음...fprintf로 문자열로 기록하시려고 하면
%e옵션을 사용해서 지수형식으로 표시해야 될것 같은데요.
galadriel in the tower of elves
Re: 큰 값을 읽어오거나 파일로 쓰려면 어떻게 해야하나요?
fprintf(fp, "%f\n", getHOweight(nodeNo, nodeNo1));
이부분에서 아마도 getHOweight 는 정수형을 리턴하는 함수가
아닌지요? 이 경우라면 (double)getHOweight(어쩌구...)
와같이 캐스팅해서 fprintf 인자로 해야 합니다.
아니면 그 함수가 float 나 double 을 리턴하긴 하는데, 호출 전
프로토타입을 제대로 선언하지 않으셨던가요.
지금 올리신 정도로는 이 정도 예측이 가는군요.
Orion Project : http://orionids.org
파일에서 큰 수 읽어오기..
안녕하세요.
이와 같은 코드로
이런 천여개의 숫자를 입력 받으려 했습니다.
출력결과(읽혀 들어온 모양)
이 모양으로 나옵니다. T_T
어떻게해요.. 흑흑..
이건 저도 전에 당했던 문젠데, scanf 계열에서float는 "
이건 저도 전에 당했던 문젠데, scanf 계열에서
float는 "%e"를, double은 "%le"를 쓰면 되더군요.
이런 서식 맞추기도 귀찮고 변수 타입 검사도 안되고 해서
printf/scanf 류의 함수를 무척 싫어합니다.
C++을 쓰신다면 stream 계열이 낫지 않을까요?
와..
되었어요.. ^^
정말 정말 감사드립니다.
댓글 달기