我正在尝试使用angelscript和一个简单的代码,遵循官方网站的例子。
但是当我尝试在我的脚本中初始化如下所示的双变量时:
double x=1/2;
变量x似乎用值0初始化。
它只在我写作时才有效 double x = 1 / 2.0;或加倍x = 1.0 / 2;
当我输入double x = 1/2而不在脚本中添加任何代码时,是否存在使angelscript以双精度工作的方法?
谢谢,
答案 0 :(得分:0)
这是因为1
和2
是整数,并且:
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;
如果1
和2
实际上是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)