【问题标题】: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】:

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

        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;
        

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-09-13
          • 2018-06-11
          相关资源
          最近更新 更多