【问题标题】:Angelscript wrong type conversionAngelscript错误类型转换
【发布时间】:2013-09-06 09:25:21
【问题描述】:
我目前正在尝试使用带有简单代码的angelscript,按照官方网站的示例。
但是当我尝试在我的脚本中初始化如下所示的双变量时:
double x=1/2;
变量 x 似乎被初始化为值 0。
它只在我写的时候有效
双 x=1/2.0;或双 x=1.0/2;
当我键入 double x=1/2 而不在脚本中添加更多代码时,是否存在使 angelscript 以双精度工作的方法?
谢谢,
【问题讨论】:
标签:
c
types
double
precision
angelscript
【解决方案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)
【解决方案2】:
当您将int 除以int 时,结果是int。商是结果,余数被丢弃。在这里,1 / 2 产生的商为零,余数为 1。如果您需要 double,请尝试 1.0 / 2。
不,没有办法通过将两个ints 相除而不转换结果来获得double。
【解决方案3】:
那是因为1 和2 是整数,并且:
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 变量,这会很方便 - 通过这种方式转换,它们的值将在除法之前转换为双精度数,因此乘积将是双精度数。