99网
您的当前位置:首页【C++】如何令内存数值以最合适的单位显示

【C++】如何令内存数值以最合适的单位显示

来源:99网
void showNumber(unsigned long long number) {
	int digit;//基本单位权重
	int tmp_digit;//基本单位权重(临时)
	unsigned long long tmp_number;//临时数值
	unsigned long long firstNumber;//前数
	unsigned long long lastNumber;//尾数
	//获取位数(1024进制)
	digit = 0;
	tmp_number = number;
	while (tmp_number >>= 10)++digit;
	//超过PB的就不再进单位
	if (digit > 5)digit = 5;
	//开始获取内存的小数点前面部分
	tmp_digit = digit;
	firstNumber = number;
	while (tmp_digit--) firstNumber >>= 10;
	//开始获取内存的小数点后面部分(两位)
	tmp_number = number;
	lastNumber = 0;
	if (digit > 0) {
		tmp_digit = digit;
		while (--tmp_digit) tmp_number >>= 10;
		tmp_number %= 1024;
		lastNumber = tmp_number / 1024.0 * 100;//这里的100就是后两位,如果是1000就是后三位
	}
	switch (digit) {
	case 0:cout << firstNumber << "B"; break;
	case 1:cout << firstNumber << "." << lastNumber << "KB"; break;
	case 2: cout << firstNumber << "." << lastNumber << "MB"; break;
	case 3: cout << firstNumber << "." << lastNumber << "GB"; break;
	case 4: cout << firstNumber << "." << lastNumber << "TB"; break;
	case 5: cout << firstNumber << "." << lastNumber << "PB"; break;
	}
}

因篇幅问题不能全部显示,请点此查看更多更全内容