без знака долго долго вдвое - PullRequest
0 голосов
/ 09 августа 2011

Я пытаюсь преобразовать 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 ]

3 голосов
/ 09 августа 2011

Вы не соответствуете спецификатору формата.Вам нужно использовать формат с плавающей запятой для печати double.Попробуйте использовать %f вместо %i.Несоответствие вызывает неопределенное поведение.

2 голосов
/ 09 августа 2011

Я думаю, что ваш формат неправильный.Вы должны использовать %f: NSLog([NSString stringWithFormat:@"%f", tempD]);

...