1

我目前正在尝试使用带有简单代码的 angelscript,遵循官方网站的示例。

但是当我尝试在我的脚本中初始化如下所示的双变量时:

double x=1/2;

变量 x 似乎用值 0 初始化。

它仅在我写 double x=1/2.0; 时才有效;或双 x=1.0/2;

当我键入 double x=1/2 而不在脚本中添加更多代码时,是否存在使 angelscript 以双精度工作的方法?

谢谢,

4

3 回答 3

1

使用一些宏观诡计:

#include <stdio.h>

#define DIV * 1.0 / 

int main(void)
{
    double x = 1 DIV 2;

    printf("%f\n", x);
    return 0;
}

DIV也可以定义为:

#define DIV / (double)
于 2013-09-03T08:51:58.423 回答
0

这是因为12是整数,并且:

int x = 1/2;

将为0。如果x实际上是双精度数,则会得到隐式强制转换

double x = (double)(1/2);

这意味着1/2 = 0成为0.0. 请注意,这与以下内容不同:

double x = (double)1/2;

哪个会做你想做的事。

带小数的数字是双精度数,整数除以双精度数产生双精度数。您也可以通过转换每个数字来做到这一点:

double x = (double)1/(double)2;

如果1并且2实际上是 int 变量,这很方便——通过这种方式转换,它们的值将在除法之前转换为双精度,因此乘积将是双精度。

于 2013-09-03T08:22:10.063 回答
0

当你除以一个intint,结果是一个int。商是结果,余数被丢弃。在这里,1 / 2产生的商为零,余数为 1。如果需要double,请尝试1.0 / 2

不,没有办法double 通过将两个ints 相除而不转换结果来获得 a 。

于 2013-09-03T08:22:29.080 回答