MathArcsin(1/2)==0

 
Так оно и получается.
MathArcsin(1/2) == 0
MathArcsin(0.5) вычисляется нормально.
MathArctan аналогично, другие не проверял.

Это неявное преобразование типов что ли так работает?
Точно (потому как MathArcsin(1.0/2.0) вычисляется нормально).

Баг, товарищи.
 
Да, неявное приеобразование приводит к тому, что 1/2=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 все числа - двойной точности. там нет целочисленного типа
Причина обращения: