1

私は現在、公式ウェブサイトの例に従って、簡単なコードでエンジェルスクリプトを使用しようとしています。

しかし、スクリプトで以下のような double 変数を初期化しようとすると:

double x=1/2;

変数 x は値 0 で初期化されているようです。

double x=1/2.0; と書いた場合にのみ機能します。または double x=1.0/2;

スクリプトにコードを追加せずに double x=1/2 と入力すると、angelscript を倍精度で動作させる方法はありますか?

ありがとうございました、

4

3 に答える 3

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)
于 2013-09-03T08:51:58.423 に答える
0

これは、12が整数であり、次の理由によるものです。

int x = 1/2;

0 になりxます。 が実際に double の場合、暗黙のキャスト変換が行われます。

double x = (double)(1/2);

つまり1/2 = 0になり0.0ます。次と同じではないことに注意してください。

double x = (double)1/2;

これはあなたが望むことをします。

小数を含む数値は double であり、int を double で割ると double になります。各数値をキャストしてこれを行うこともできます。

double x = (double)1/(double)2;

1とが実際に int 変数である場合、これは便利です2。このようにキャストすると、それらの値は除算の前に double に変換されるため、積は double になります。

于 2013-09-03T08:22:10.063 に答える
0

を で割るintint、結果は になりintます。商が結果で、剰余は破棄されます。ここで1 / 2、商がゼロで剰余が 1 になります。 が必要な場合はdouble、 を試してください1.0 / 2

いいえ、結果をキャストせずにdouble 2 つの s を分割して a を取得する方法はありません。int

于 2013-09-03T08:22:29.080 に答える