Точность чисел с плавающей точкой.

Страницы: 1
RSS
Точность чисел с плавающей точкой.
 
1. Какую точность для чисел с плавающей точкой обеспечивают переменные Lua?

2. Если надо будет передать переменную из скрипта на Lua в модуль, написанный на Си, то в переменных какого типа языка Си лучше хранить значения High, Low, Open, Close? Нужно использовать long double, или хватит double?
 
Точность значения типа number в lua намного превышает. Разрядность цен любых инструментов. Волноваться тут не стоит.

Для хранения ohlc вполне достаточно типа float. Но вычисления все же лучше делать в double
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
В данном случае следует учитывать не погрешность вычислений а дискретность (шаг дискретизации) значений(цены). Он указывается биржей для каждого инструмента свой.
Например, сербанк 0.01. при цене 100 имеем шаг дискретизации 1/10000 т е не более пяти значащих цифр.
Тип float - 7 значащих цифр. double -15 цифр.
Получаем, погрешность вычисления даже с типом float меньше шага дискретности в 100 раз.
----------------------------------------------------------------------------
Резюме, точность вычисления (величина обратная погрешности )  для биржевых цен идеальная.
Погрешность вычислений практически не влияет на величину прогнозируемых цен.
 
Цитата
s_mike@rambler.ru пишет:
вычисления все же лучше делать в double
Про вычисления тоже хочется знать, я забыл спросить.


Цитата
Николай Камынин пишет:
Тип float - 7 значащих цифр. double -15 цифр.
В справочнике написано, для long double и double точность

Цитата
не менее 10 значащих цифр.
Реальная точность зависит от компилятора (возможно, от опций компиляции).

По-быстрому сварганил:

Код
#include <stdio.h>
int main()
{
   printf("%.20f\n%.20f", 1.0/3.0, 1000+1.0/3.0);
   return 0;
}

Резалт:

Цитата
0.33333333333333331000
1000.33333333333340000000
вроде, 17 значащих цифр.

Буду double использовать.
 
еще раз повторю для любителей справочника:
float -действительное 4 байта. точность 7 значащих цифр.
double -действительное число с двойной точностью 8байт точность 15 значащих цифр, так как мантисса хранится в нормализованном виде
long double- длинное действительное 10 байт. точность 19 значащих цифр.
----------------------------------
Дополню. проблема скорее всего у Вас будет не с точностью(погрешностью), а с тем что перевод из десятичной формы в двоичную и обратно очень часто не может быть выполнен точно.
Поэтому давным давно для финансовых операций фирма IBM предложила и долго использовали двоично-десятичную математику в которой финансовые операции ( а на бирже лишь такие) всегда вычисляются точно.
Но это в прошлом.
Страницы: 1
Читают тему
Наверх