Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将否定双精度转换为int_C++_Objective C_C - Fatal编程技术网

C++ 将否定双精度转换为int

C++ 将否定双精度转换为int,c++,objective-c,c,C++,Objective C,C,以下代码段之间有区别吗 double doubleMillis = -getSecondsSinceNow()*100; // returns double int timestamp = (int) doubleMillis; 及 我在时间戳中看到了不同的值。第一个似乎给了我有意义的结果 当我这么做的时候: int timestamp = -getSecondsSinceNow()*1000; 我得到的结果与第一种方法类似。这里您将getSecondsSinceNow()的返回值(doub

以下代码段之间有区别吗

double doubleMillis = -getSecondsSinceNow()*100; // returns double
int timestamp = (int) doubleMillis;

我在时间戳中看到了不同的值。第一个似乎给了我有意义的结果

当我这么做的时候:

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;

是的,这是有区别的。

这里您将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;


所以是的,有一点不同。

这两种方法都不可靠,因为您要将64位的双精度转换为32位整数。您将丢失信息。

这两种方法都不可靠,因为您正在将64位的双精度浮点转换为32位整数。您将丢失信息。

我意识到这一风险,我知道我的数据不会超过2^31。问题是我将double传递给另一个需要int的函数,因此我将不得不接受它。我意识到这一风险,我知道我的数据不会跨越2^31。问题是我将double传递给另一个需要int的函数,所以我不得不接受它。呵呵,所以优先级咬了我一口-DI自由地更新了答案,不依赖任何Objective-C材料。你的答案适用于任何“C”,当然,没问题,但你错过了两个位置,所以我修正了它。呵呵,所以你咬了我一口-DI自由地更新了答案,不依赖任何Objective-C材料。您的答案适用于任何“C”,当然,没问题,但您错过了两个位置,因此我将其修复。@Neil如果忽略NSDate/NSTimeInterval部分,则为::-)在那里,我对问题进行了编辑,使其不依赖于任何目标C。不,它不是,除非你也忽略方括号。@Neil同意,我现在更新了代码。第一个乘以100;第二个是1000。这是一个数量级的不同。@Neil如果忽略NSDate/NSTimeInterval部分,则为::-)在那里,我对问题进行了编辑,使其不依赖于任何目标C。不,它不是,除非你也忽略方括号。@Neil同意,我现在更新了代码。第一个乘以100;第二个是1000。这是一个数量级的不同。