В этой статье будет рассмотрено “Числовой формат данных. Число с плавающей точкой Qlik. Округление”

Qlik Sense Блог

QlikView и Qlik Sense используют 64-битный двоичный формат двойной точности с плавающей запятой (IEEE 754 – широко используемый стандарт IEEE, описывающий формат представления чисел с плавающей точкой) для хранения всех чисел. 

Это означает, что для хранения числа используются 64 бита:

  • один бит для знака,
  • 11 бит для показателя степени и
  • 52 бита для самого числа. 

52-битное число соответствует приблизительно 15 значащим десятичным разрядам. Это означает, что Qlik Sense может хранить целые числа до 14 цифр, сохраняя при этом точность числа. Однако целые числа, содержащие более 14 цифр, будут округлены до 14 значащих цифр.

Для нецелых чисел ситуация немного отличается. Некоторые дробные числа могут храниться в точной форме, например, 0.5 и 0.25, поскольку они имеют точный двоичный аналог. Но другие не могут, например, 0.1 и 0.2, поскольку они не имеют точного двоичного аналога.

Это не ошибки ни в Qlik Sense, ни в IEEE 754. Скорее они представляют ошибки в ожидании двоичных чисел с плавающей запятой. Просто некоторые значения не могут быть точно представлены в виде двоичных чисел, поэтому получаются ошибки округления. Обойти это невозможно, кроме как сначала преобразовать число с плавающей запятой в целое число (путем умножения) (не оставляя десятичной части), а затем округлить (или усечь) целое число соответствующим образом и, наконец, преобразовать целое число обратно в число с плавающей запятой (делением).

Если в приложении необходимо получить высокую точность в вычислениях, скажем, до двух цифр после десятичной запятой, Вы можете умножить необработанные данные на 100, прежде чем они будут сохранены, как число в Qlik Sense (в скрипте загрузки данных в модель). Сохраняйте все такие числа в 100 раз больше, чем они должны быть, а затем делите их на 100 в любом вычислении при построении визуализации.


Оставить комментарий

avatar
  Подписаться  
Уведомление о