2011-08-09 5 views
0

unsigned long longdouble으로 변환하려고합니다. 왜냐하면 쉼표가 필요하기 때문입니다.부호없는 long long double long

NSFileManager* fMgr = [[NSFileManager alloc] init]; 
NSError* pError = nil; 
NSDictionary* pDict = [ fMgr attributesOfFileSystemForPath:NSHomeDirectory() error:&pError ]; 
//get DiskSpace 
NSNumber* pNumAvail = (NSNumber*)[ pDict objectForKey:NSFileSystemSize ]; 
[fMgr release]; 
//byte to Mega byte 
unsigned long long temp = [pNumAvail unsignedLongLongValue]/1000000; 
//Mega byte to kilo byte 
double tempD = (double)(temp/1000.0); 
NSLog([NSString stringWithFormat:@"%qu", temp]); //result 63529 
NSLog([NSString stringWithFormat:@"%i", tempD]); //result 1168231105 
///////////////////////////////////////////////////but i want 63.529 

내가 뭘 잘못하고 있니?

+0

형식 지정자가 잘못되었습니다. –

답변

3

형식 지정자가 일치하지 않습니다. double을 인쇄하려면 부동 소수점 형식을 사용해야합니다. %i 대신 %f을 사용해보세요. 불일치로 인해 정의되지 않은 동작이 발생합니다.

+0

-.- 아주 많이, 초보자의 실수 .... – Seega

2

형식이 잘못되었습니다. %f을 사용해야합니다. NSLog([NSString stringWithFormat:@"%f", tempD]);

+0

또한 메가 바이트는 1024 * 1024 바이트입니다! –