Добавлен Diaboliko
У меня есть несколько идей, почему так происходит, однако если кто-то знает наверняка - милости прошу. По-видимому, где-то возникает переполнение. Но с чего бы вдруг? Здравый смысл намекает что если точность выше нужной - порнография происходить не должна.
Элсо, начиная с точности в двойках, меньшей чем точность калькулятора винды, произведение дает нуль. Занимательная математика.
Принятый ответ
Практически одинаково.
Мои тесты дали следующие значения в единицах процессорных тактов.
Объявление локальной переменной любого типа (при каждом вызове функции): 2700
Присваивание литерала локальной переменной любого типа: 700
Присваивание литерала глобальной переменной любого типа: 6700
Присваивание литерала элементу массива: 7500
Обращение к локальной переменной любого типа или константам true, false, null: 300
Обращение к глобальной переменной: 1300
Обращение к элементу массива: 400
Обращение к формальному параметру функции: 1000
Когда в вещественном литерале забыли поставить точку: 300
Целочисленные операции +, -, *: 600
Вещественные операции +, -: 800
Вещественная операция *: 1000
Целочисленное деление: 800
Вещественное деление: 1400
Унарный минус: 3500
Операции <, >: 1300
Операции <=, >=: 1100
Операции ==, !=: 700
Операция not: 100
Вызов пустой функции и возврат по return: 8500
Вызов пустой функции и возврат по endfunction: 9200
Передача первого значения функции: 3800
Передача каждого следующего значения функции: 1700
Возврат значения из функции: 900
loop 2 000
endloop 1 600
exitwhen true 3 300
if true then endif 2 800
if false then else endif 2 800
if not false then endif 2 900
Мои тесты дали следующие значения в единицах процессорных тактов.
Объявление локальной переменной любого типа (при каждом вызове функции): 2700
Присваивание литерала локальной переменной любого типа: 700
Присваивание литерала глобальной переменной любого типа: 6700
Присваивание литерала элементу массива: 7500
Обращение к локальной переменной любого типа или константам true, false, null: 300
Обращение к глобальной переменной: 1300
Обращение к элементу массива: 400
Обращение к формальному параметру функции: 1000
Когда в вещественном литерале забыли поставить точку: 300
Целочисленные операции +, -, *: 600
Вещественные операции +, -: 800
Вещественная операция *: 1000
Целочисленное деление: 800
Вещественное деление: 1400
Унарный минус: 3500
Операции <, >: 1300
Операции <=, >=: 1100
Операции ==, !=: 700
Операция not: 100
Вызов пустой функции и возврат по return: 8500
Вызов пустой функции и возврат по endfunction: 9200
Передача первого значения функции: 3800
Передача каждого следующего значения функции: 1700
Возврат значения из функции: 900
loop 2 000
endloop 1 600
exitwhen true 3 300
if true then endif 2 800
if false then else endif 2 800
if not false then endif 2 900
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован IceFog
поэтому близы ограничили размер реала
Мои тесты дали следующие значения в единицах процессорных тактов.
Объявление локальной переменной любого типа (при каждом вызове функции): 2700
Присваивание литерала локальной переменной любого типа: 700
Присваивание литерала глобальной переменной любого типа: 6700
Присваивание литерала элементу массива: 7500
Обращение к локальной переменной любого типа или константам true, false, null: 300
Обращение к глобальной переменной: 1300
Обращение к элементу массива: 400
Обращение к формальному параметру функции: 1000
Когда в вещественном литерале забыли поставить точку: 300
Целочисленные операции +, -, *: 600
Вещественные операции +, -: 800
Вещественная операция *: 1000
Целочисленное деление: 800
Вещественное деление: 1400
Унарный минус: 3500
Операции <, >: 1300
Операции <=, >=: 1100
Операции ==, !=: 700
Операция not: 100
Вызов пустой функции и возврат по return: 8500
Вызов пустой функции и возврат по endfunction: 9200
Передача первого значения функции: 3800
Передача каждого следующего значения функции: 1700
Возврат значения из функции: 900
loop 2 000
endloop 1 600
exitwhen true 3 300
if true then endif 2 800
if false then else endif 2 800
if not false then endif 2 900