0

我正在使用以下代码来获取启动磁盘的可用磁盘空间。

NSFileManager *fm = [NSFileManager defaultManager];

double freeSpace = 0.0;
NSDictionary *attr = [[NSFileManager defaultManager] attributesOfFileSystemForPath:@"/" error:nil];
if (!error) {
    freeSpace = [[attr objectForKey:NSFileSystemFreeSize] doubleValue];
}
//Convert from bytes to GB.
freeSpace = freeSpace/(1024*1024*1024);

但是对于MacOS 10.6 及更高版本,它给出的 size 错误。过了一会儿,我发现对于 10.5,我们需要将它除以 ( 1024*1024*1024 ) 以获得正确的可用大小。对于 10.6 及更高版本,我必须将其除以 ( 1000*1000*1000 ) 以获得正确的大小(当我们右键单击 HardDisk -> Get Info 时会显示在 Finder 中)。现在,我认为除以 1000 而不是 1024 是从 KB 转换为 MB 或其他什么的正确方法。那么为什么在 Mac 10.6 及更高版本中会这样呢?

是否有任何其他功能可以使可用的启动磁盘空间正确到小数点后 2 位?

4

1 回答 1

2

除了某些类型的软盘驱动器外,磁盘驱动器一直以 1000 的幂进行描述和销售。内存使用 1024 的幂,传统上 (ab) 使用 SI 的 1000 幂前缀。程序员倾向于遵循内存约定,但它从来都不是通用的和明确的。

1999 年,IEC 建议仅对 1000 的幂使用 SI 前缀(kilo、mega 等),并为 1024 的幂使用一组新的前缀。从 10.6 开始,Mac OS X 对磁盘和文件遵循此建议——因此更多与宣传的磁盘大小非常匹配——但继续使用 SI 前缀表示 RAM 的 1024 次幂。

于 2012-05-08T07:46:18.263 回答