我目前正在尝试用一个简单的代码来使用angelscript,遵循官方网站的例子。
但是当我尝试在脚本中初始化一个双精度变量时,如下所示:
double x=1/2;变量x似乎是用值0初始化的。
只有当我写双倍x=1/2.0或双倍x=1.0/2时,它才起作用;
当我输入double x=1/2时,有没有办法让angelscript以双精度工作,而不需要在脚本中添加更多的代码?
谢谢,
发布于 2013-09-03 16:51:58
使用一些宏诡计:
#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-03 16:22:10
这是因为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实际上是整型变量,这很方便--通过这种方式转换,它们的值将在除法之前转换为双精度型,因此乘积将是双精度型。
发布于 2013-09-03 16:22:29
当您将int除以int时,结果是int。商是结果,其余部分被丢弃。这里,1 / 2产生的商为0,余数为1。如果您需要double,请尝试1.0 / 2。
不,通过将两个int相除而不强制转换结果是无法获得double的。
https://stackoverflow.com/questions/18587277
复制相似问题