根据您想要做的事情(我假设以 10 为基数),您可以这样做:
int64_t radix = 1000000; // or some other power of 10
x -= x%radix; // last 6 decimal digits are now 0
// e.g: from 3453646345345345 to 3453646345000000
或者这个(如上一个答案):
x /= radix; // last 6 decimal digits are gone, the result rounded down
// e.g: from 3453646345345345 to 3453646345
对编辑的回应
出于您的目的,您可以radix
将模数示例更改为 30000:
int64_t timeInterval = 30000;
displayTime = actualTime - (actualTime % timeInterval);
以毫秒为单位的地点displayTime
和actualTime
地点。displayTime
在这种情况下,将具有 30 秒的(向下舍入)粒度,同时保留毫秒单位。
要获得向上的粒度,您可以执行以下操作:
int64_t timeInterval = 30000;
int64_t modulus = actualTime % timeInterval;
displayTime = actualTime - modulus + (modulus?timeInterval:0);
不过,根据您的要求,您似乎只想每隔几个刻度更新一次显示值。以下也将起作用:
if((actualTime - displayTime) >= timeInterval){
displayTime = actualTime - (actualTime % timeInterval);
}
请原谅 C 整数类型,我只是希望对我使用的整数的宽度保持明确:P。