下面的代码片段有区别吗?
double doubleMillis = -getSecondsSinceNow()*100; // returns double
int timestamp = (int) doubleMillis;
和
int timestamp = (int) -getSecondsSinceNow()*1000;
我发现我在时间戳记中获得的值存在差异。第一个似乎给了我有意义的结果。
当我做的时候:
int timestamp = -getSecondsSinceNow()*1000;
我得到的结果与第一种方法类似。
最佳答案
在这里,您将 getSecondsSinceNow() (double
) 的返回值转换为 int
并将其乘以 1000:
int timestamp = (int) -getSecondsSinceNow()*1000;
这就像:
int timestamp = ((int) -getSecondsSinceNow())*(1000);
而在下面的情况下,您转换了完整的结果:
一个明确的:
double doubleMillis = -getSecondsSinceNow()*1000;
int timestamp = (int) doubleMillis;
一旦隐式:
int timestamp = -getSecondsSinceNow()*1000;
所以是的,有区别。
关于c++ - 将否定的 double 转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6175869/