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 以降では、間違ったサイズが表示されます。しばらくして、10.5の場合、使用可能な正しいサイズを取得するには、 ( 1024*1024*1024 ) で割る必要があることがわかりました。10.6 以降では、( 1000*1000*1000 )で割って正しいサイズを取得する必要があります (これは、[ハードディスク] を右クリックして [情報を取得] を実行すると Finder に表示されます)。さて、1024 ではなく 1000 で割ることは、KB から MB などに変換する正しい方法ではないと思います。では、なぜ Mac 10.6 以降でこのようになるのでしょうか?

使用可能な起動ディスク領域を小数点以下 2 桁まで正確に取得できる他の関数はありますか?

4

1 に答える 1

2

フロッピー ドライブの一部のタイプを除いて、ディスク ドライブは常に 1000 の累乗で説明および販売されてきました。プログラマーはメモリ規則に従う傾向がありましたが、普遍的で明確ではありませんでした。

1999 年、IEC は、1000 のべき乗に対してのみ SI プレフィックス (キロ、メガなど) を使用し、1024 のべき乗に対して新しい一連のプレフィックスを使用することを推奨しました。10.6 以降、Mac OS X はディスクとファイルに対してこの推奨に従います。宣伝されているディスクのサイズとほぼ一致しますが、RAM には 1024 のべき乗の SI プレフィックスを引き続き使用します。

于 2012-05-08T07:46:18.263 に答える