首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angelscript错误的类型转换

Angelscript错误的类型转换
EN

Stack Overflow用户
提问于 2013-09-03 16:15:58
回答 3查看 612关注 0票数 1

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

但是当我尝试在脚本中初始化一个双精度变量时,如下所示:

代码语言:javascript
复制
double x=1/2;

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

只有当我写双倍x=1/2.0或双倍x=1.0/2时,它才起作用;

当我输入double x=1/2时,有没有办法让angelscript以双精度工作,而不需要在脚本中添加更多的代码?

谢谢,

EN

回答 3

Stack Overflow用户

发布于 2013-09-03 16:51:58

使用一些宏诡计:

代码语言:javascript
复制
#include <stdio.h>

#define DIV * 1.0 / 

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

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

DIV也可以定义为:

代码语言:javascript
复制
#define DIV / (double)
票数 1
EN

Stack Overflow用户

发布于 2013-09-03 16:22:10

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

代码语言:javascript
复制
int x = 1/2;

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

代码语言:javascript
复制
double x = (double)(1/2);

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

代码语言:javascript
复制
double x = (double)1/2;

它会做你想做的事。

带小数的数字是双精度的,用整型除以双精度得到的是双精度。您也可以使用强制转换每个数字来执行此操作:

代码语言:javascript
复制
double x = (double)1/(double)2;

如果12实际上是整型变量,这很方便--通过这种方式转换,它们的值将在除法之前转换为双精度型,因此乘积将是双精度型。

票数 0
EN

Stack Overflow用户

发布于 2013-09-03 16:22:29

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

不,通过将两个int相除而不强制转换结果是无法获得double的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18587277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档