Попробуйте следующую запись, возможно поможет:
double X2=137858491849.0;
Вариант у которого ответ в обоих случаях = 419538377
int X1=MathPow(13,10); int X2 = 137858491849.0; Print(X1," ",X2);
И мне пожалуйста ответьте на вопрос. Что за чертовщина творится?
int start() { //---- MathSrand(GetTickCount()); int f = MathRand()%100; double d = f/100; Alert (d); //---- return(0); }
Почему данный скрипт все время выдает 0?
Ну это я уже обнаружил(недавно),но все равно спасибо, вот тока вопрос-то остается все еще в силе, почему?
Может потому, что при вводе вручную присвоение дабловской константе происходит как целочисленная константа?
И мне пожалуйста ответьте на вопрос. Что за чертовщина творится?
Почему данный скрипт все время выдает 0?
сделай нормализацию!
т.е.
вот рабочий вариант:
MathSrand(GetTickCount());
int f = MathRand()%100;
double d = NormalizeDouble(f,0)/100;
Alert (d);
или без нормализации:
MathSrand(GetTickCount());
double f = MathRand()%100;
double d = f/100;
Alert (d);
Точно. Забыл про приведение типов. Инт нельзя использовать в выражениях с дабл.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте!
Допустим есть:
double X1;
double X2;
присвоим им:
double X1=MathPow( 13, 10) ;
double X2=137858491849;
теперь принтанем:
Print("X1= ",X1);
Print("X2= ",X2);
результат принта:
X1 =137858491849;
X2 =419538377;
Итак результат X1 получился верным по математическим вычислениям(взяв стандартный виндовский калькулятор), а вот результат X2 ошибочным(?).
Впрочем в этом-то и заключается вопрос.
Заранее благодарю за ответ.