2013-09-03 3 views
0

В настоящее время я пытаюсь использовать ангелскрипт с простым кодом, следуя примерам официального сайта.Angelscript неправильное преобразование типа

Но когда я пытаюсь инициализировать двойной переменной, как показано ниже в моем сценарии:

double x=1/2; 

переменная х, кажется, инициализируются со значением 0.

Он работает только тогда, когда я пишу двойной х = 1/2,0; или двойной x = 1,0/2;

Существует ли способ заставить ангельский текст работать в двойной точности, когда я набираю double x = 1/2 без добавления кода в скрипт?

Спасибо,

ответ

0

Это потому, что 1 и 2 являются целыми числами, а также:

int x = 1/2; 

бы быть 0. Если x на самом деле является двойной, вы получите Конверсиям Согласовать неявное CAST:

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

Это означает, что 1/2 = 0 будет 0.0. Обратите внимание, что это не то же самое:

double x = (double)1/2; 

Что будет делать то, что вы хотите.

Номера с десятичными знаками являются удвоенными, а деление int на двойное производит двойной. Вы также можете сделать это с помощью литья каждого номера:

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

Что удобно, если 1 и 2 фактически Int переменного - литья таким образом, их значение будет преобразованы в два раз до деления, поэтому продукт будет двойной.

0

При делении int на int результатом является int. Фактор - результат, остаток отбрасывается. Здесь 1/2 дает значение нуля и остаток 1. Если вам нужен double, попробуйте 1.0/2.

Нет, не существует способа получить double, разделив его на 2 int s без внесения результата.

0

Используя некоторые макро придирками:

#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) 
Смежные вопросы