Angelscript错误的类型转换

时间:2013-09-03 08:15:58

标签: c types double precision angelscript

我正在尝试使用angelscript和一个简单的代码,遵循官方网站的例子。

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

double x=1/2;

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

它只在我写作时才有效    double x = 1 / 2.0;或加倍x = 1.0 / 2;

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

谢谢,

3 个答案:

答案 0 :(得分:0)

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

int x = 1/2;

如果x实际上是双倍的,那么你会得到隐式强制转换

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

这意味着1/2 = 0变为0.0。请注意,它与:

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

哪个会做你想要的。

带小数的数字是双精度数,将int除以double会产生双精度数。您也可以通过转换每个数字来执行此操作:

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

如果12实际上是int变量,这很方便 - 通过这种方式,它们的值将在除法之前转换为double,因此产品将是double。 / p>

答案 1 :(得分:0)

当您将int除以int时,结果为int。商是结果,其余部分被丢弃。在这里,1 / 2产生零和余数为1的商。如果您需要double,请尝试1.0 / 2

不,在没有投射结果的情况下,通过划分两个double无法获得int

答案 2 :(得分:0)

使用一些宏观chicanery:

#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)