unsigned long long to double

时间:2011-08-09 15:03:51

标签: objective-c nsstring string-formatting

我正在尝试将unsigned long long转换为double,因为我需要逗号。

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

我做错了什么?

2 个答案:

答案 0 :(得分:3)

您的格式说明符不匹配。您需要使用浮点格式来打印double。尝试使用%f代替%i。不匹配会导致不确定的行为。

答案 1 :(得分:2)

我认为你的格式错了。您应该使用%fNSLog([NSString stringWithFormat:@"%f", tempD]);