Да, неявное приеобразование приводит к тому, что 1/2=0.
Рой в поиске на форуме . Потом удивляйся :)
Рой в поиске на форуме . Потом удивляйся :)
Это не баг, для языков программирования это нормально.
Сначала вычисляется 1/2 как целое деление, получается 0.
Потом целый 0 преобразуется в вещественный и передается как параметр.
Все языки и компилляторы так работают.
Сначала вычисляется 1/2 как целое деление, получается 0.
Потом целый 0 преобразуется в вещественный и передается как параметр.
Все языки и компилляторы так работают.
Это не баг, для языков программирования это нормально.
Все языки и компилляторы так работают.
Все языки и компилляторы так работают.
Мягко говоря, не все. Попробуй Delphi скажем:
Var i, j : integer; BEGIN j:=2; i:=j/2; END.
Большинство разумных языков, с счастью, отличают / от div.
Большинство разумных языков, с счастью, отличают / от div.
Ну а еще один разумный язык назвать можно?
В MQL нет оператора div.
Так что тут и вариантов нет.
Ну а еще один разумный язык назвать можно?
MS VBA. Ничего другого нет под руками.
Sub Test() Dim i As Integer i = 1 MsgBox (Str(i / 2)) MsgBox (Str(1 / 2)) End Sub
В MQL нет оператора div.
Так вот и нехорошо это.
Кстати, проверил только что, в MQL от MT 3.83 нормально работает
Print(ArcSin(1/2));
Кстати, проверил только что, в MQL от MT 3.83 нормально работает
Print(ArcSin(1/2));
в MQL II все числа - двойной точности. там нет целочисленного типа
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
MathArcsin(1/2) == 0
MathArcsin(0.5) вычисляется нормально.
MathArctan аналогично, другие не проверял.
Это неявное преобразование типов что ли так работает?
Точно (потому как MathArcsin(1.0/2.0) вычисляется нормально).
Баг, товарищи.