我在學校運行Ubuntu 13.10的計算機上有16 GB RAM。我寫了一個簡單的C程序來獲得總RAM,但它顯示的是非精確的結果,而不是16個,它打印出15個。如何使它精確,即使是更小的RAM大小?在家裏,我有768 MB RAM的計算機和我的程序顯示有錯誤的結果太:(在C,linux中獲取RAM大小,非精確結果
#include <sys/sysctl.h>
#include <sys/types.h>
#include <stdlib.h>
#include <stdio.h>
void getMemoryInfo()
{
FILE *meminfo = fopen("/proc/meminfo", "r");
int totalMemory = 0;
if(meminfo == NULL)
{
exit(-1);
}
char buff[256];
while(fgets(buff, sizeof(buff), meminfo))
{
int ramKB;
if(sscanf(buff, "MemTotal: %d kB", &ramKB) == 1)
{
totalMemory = ramKB/1024.0;
totalMemory = totalMemory/1024.0;
}
}
if(fclose(meminfo) != 0)
{
exit(-1);
}
printf("%d\n", totalMemory);
}
int main()
{
getMemoryInfo();
return 0;
}
FP這裏絕對不是一個準確的問題,雙打有52位數的尾數,我們正在處理整數,所以我們可以在沒有任何精度損失的情況下上升到2^53-1。 –