Что нового

Ошибка возврата функции Hex()? (версия 3.3.8.0)

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
В версии 3.3.8.0, при попытке получить Hex -значение числа, возведенного в степень, у меня функция возвращает 0000:
Код:
$iR = Random(1, 255, 1)
$iTemp = $iR ^ 2
ConsoleWrite($iR & ' ^ 2 = ' & $iTemp & @LF)
MsgBox(16, $iTemp, Hex($iTemp, 4) & @LF & IsInt($iTemp)) ;3.3.8.0 не работает, возвращает 0000.
MsgBox(64, $iTemp, Hex(Int($iTemp), 4) & @LF & IsInt($iTemp)) ;3.3.8.0 работает только так.
В 3.3.6.1 все нормально работает. :wacko:

А так работает нормально:
Код:
ConsoleWrite(@AutoItVersion & @LF)
$iR = Random(1, 255, 1)
$iTemp = $iR * $iR
ConsoleWrite($iR & ' * ' & $iR & ' = ' & $iTemp & @LF)
MsgBox(64, $iTemp, Hex($iTemp, 4) & @LF & IsInt($iTemp)) ;3.3.8.0 работает.


Разобрался, это не ошибка.
Changed: Hex() определяет doubles внутренне и обрабатывает их соответственно бинарному формату.
Не знал, что умножение возвращает тип Int32, а возведение в степень и деление Double. Почему?
Код:
$i = 10
$iInt32 = $i * $i
$iDouble = $i ^ 2
$iDouble_1 = $i / 2
ConsoleWrite($iInt32 & @TAB & VarGetType($iInt32) & @LF)
ConsoleWrite($iDouble & @TAB & VarGetType($iDouble) & @LF)
ConsoleWrite($iDouble_1 & @TAB & VarGetType($iDouble_1) & @LF)


3.3.8.1 то же самое, видимо это навсегда теперь. :(
 
Верх