我正在尝试通过执行一系列计算来执行计算,以从当前时间的总微秒回到 HHMMSSFFF 格式的当前时间。但是,当我尝试从总微秒数中减去 hours*3600000000 时,返回的值不正确(它偏离了一个数量级,并且数字本身是错误的。有谁知道如何解决这个问题?我试过了使用 long long int 和 long double 但它们都输出相同的值。我复制了下面的代码和控制台中的结果输出。
当数据进入时,时间存储在一个向量中(又名时间戳),这就是为什么有一个 temp_counter。我在 boost::posix_time 库中使用 time_duration。
long double total = cur_time.at(temp_counter).total_microseconds();
cout << total << endl;
int hours = total/(3600000000);
cout << hours << endl;
long long int temp = hours*3600000000;
cout << std::setprecision(20) << temp << endl;
total = total - temp;
cout << total << endl;
输出:
35465976558
9
2335228928
33130747630
根据我的计算,temp 实际上应该是 32400000000,新的总数应该是 3065976558。