在Qt中,你可以通过简单的数学计算来实现已发送字节与总字节之间的百分比计算,并保留两位小数点。以下是一个示例代码,展示如何进行这个计算:
#include <QCoreApplication>
#include <QFile>
#include <QDebug>
double calculatePercentage(qint64 sentBytes, qint64 totalBytes) {
if (totalBytes == 0) {
return 0.0; // 避免除以零
}
return static_cast<double>(sentBytes) / totalBytes * 100.0;
}
QString formatPercentage(double percentage) {
return QString::number(percentage, 'f', 2) + "%"; // 保留两位小数并加上百分号
}
int main(int argc, char *argv[]) {
QCoreApplication a(argc, argv);
QFile file("path/to/your/file");
if (!file.open(QIODevice::ReadOnly)) {
qWarning() << "Cannot open file for reading.";
return -1;
}
qint64 totalBytes = file.size();
qint64 sentBytes = 0;
// 模拟文件发送过程
const int chunkSize = 1024; // 每次发送的字节数
while (!file.atEnd()) {
QByteArray buffer = file.read(chunkSize);
sentBytes += buffer.size();
double percentage = calculatePercentage(sentBytes, totalBytes);
QString formattedPercentage = formatPercentage(percentage);
qDebug() << "Sent:" << sentBytes << "Total:" << totalBytes << "Percentage:" << formattedPercentage;
// 在这里可以添加实际的发送代码,比如 socket.write(buffer);
// 模拟延时(例如网络传输时间)
QThread::sleep(1);
}
file.close();
return a.exec();
}
代码说明:
- calculatePercentage: 函数计算已发送字节与总字节的百分比。
- formatPercentage: 函数将百分比格式化为字符串,保留两位小数并加上“%”符号。
- main函数:
- 打开一个文件并获取其大小。
- 模拟文件分块发送,每次读取
chunkSize
字节的数据,并更新已发送字节计数。 - 每次读取后,计算并打印出当前已发送的百分比。
你可以根据具体需求调整文件路径和其他参数。这段代码仅用于演示如何计算和格式化百分比,可以集成到你的项目中。
内容由零声教学AI助手提供,问题来源于学员提问