잠재적 버그점 누가점 잡아주시면 감사하겠습니다...
글쓴이: 냐옹이 / 작성시간: 토, 2005/08/27 - 9:37오후
#include <iostream> using namespace std; int main() { char* unit[] = { "B", "KB", "MB", "GB", "TB", "PB" }; int i = 41; // 41 byte int u = 0; // 단위 (0:B, 1:KB, 2:MB, 3:GB) int j = 30000000; // 갯수 float r = i * j; for (; r >= 1024; r /= 1024) u++; cout << "Capacity : " << r << unit[u] << endl; return 0; }
위 코드좀 봐주세요. 제가 초보라서 음.... :oops: 이 같은 용량의 파일이 몇개 면 몇메가인가를 보여주는... 그냥 심심해서 짜본건데...
i == 1024일때 좀 이상하네요. i == 41일때는 제대로 나오는것 같은데... 왜 1024일때 보다 작을가요??? 41일때는 1.1553GB라고 나오고 1024일때는 624.875MB라고 나오네요... 제가 계산식을 잘못 한걸까요???
Forums:
<bbcode>int main(){ char*
<bbcode>
int main()
{
char* unit[] = { "B", "KB", "MB", "GB", "TB", "PB" };
int i = 1024; // 41 byte
int u = 0; // 단위 (0:B, 1:KB, 2:MB, 3:GB)
int j = 30000000; // 갯수
float r = (float)i * (float)j;
for (; r >= 1024.0; r /= 1024.0)
{
cout << "## " << r << endl;
u++;
}
cout << "## end r:" << r << endl;
cout << "Capacity : " << r << unit[u] << endl;
i = 41; // 41 byte
r = i * j;
for (; r >= 1024.0; r /= 1024.0)
{
cout << "## " << r << endl;
u++;
}
cout << "## end r:" << r << endl;
cout << "Capacity : " << r << unit[u] << endl;
return 0;
}
</bbcode>
이거 돌려보시면 바로 아실듯
음... 감사합니다. 드디어 찾아냈습니다. 정수의 범위까지 찾아가며, 계
음... 감사합니다. 드디어 찾아냈습니다. 정수의 범위까지 찾아가며, 계산기 두두려가면서 확인했습니다.
범위에 신경을 좀 써야 겠습니다. :oops:
명시적 형변환과 묵시적 형변환이 차이가 이렇게 크군요.... 오늘 뼈져리게 느끼네요...(어디 책에서 읽었었는데... ㅠ.ㅠ;;;)
------------------------
냐옹~~
댓글 달기