Страницы: 1
RSS
некорректный результат при вычитании округленных значений в Power Query
 
Добрый день!
Подскажите, пожалуйста. Столкнулся с непостижимым!

Делаю запрос через Power Query к файлу, который использую как источник.
Там есть 2 колонки между которыми произвожу вычитание в PQ. Прежде чем это сделать я обе цифры округляю до 2 знаков после запятой через функцию Number.Round.

внимание вопрос! почему разница между 2 округленными числами 9,45 и 4,45 получается 4,9999999999999991 вместо 5 и как это исправить?

картинка и сам файл с запросом во вложении.
Помогите, пожалуйста!
 
Загрузите запрос в таблицу и будет 5
 
Все было бы хорошо, а если в Power Query прописывать условие, что если результат вычисления больше или равен 5, тогда TRUE иначе FALSE. в Power Query ведь он выдаст FALSE( А хотелось сделать все операции внутри Power Query.

Задачу то я выполню, но не могу понять, это глюк Power Query и из-за чего он внутри запроса выдает не целую 5-ку? а самое главное как это исправить в PQ
Изменено: Mr-Dno - 10.12.2021 15:58:16
 
Цитата
Mr-Dno написал:
а самое главное как это исправить в PQ
округлите и результат
 
А это не будет считаться костылем?) Я такое делал) сравнивал с результатом в Excel (там округлял и производил вычитание), результаты отличаются)
из чего я думаю, это будет неправильным действием. выдает желаемое за действительное и к сожалению неправильный результат.
 
Mr-Dno, это не глюк, а особенность вычисления чисел в формате "десятичное число". Там по умолчанию вот такая точность (с возможностью погрешности в дальних знаках). Эта погрешность - особенность хранения чисел Double, источник которой - двоичная система хранения чисел, а не Power Query
Чтобы избежать такой погрешности, есть смысл переводить числа в формат Currency.Type (десятичное число с фиксированной запятой) - там не более 4-х знаков.
Либо переводить в этот формат результат вычитания, например (может быть так, что два числа с фикс. запятой, но результат с плавающей точкой.
Либо использовать для сравнения функцию Value.Compare с применением третьего параметра Precision.Decimal
F1 творит чудеса
 
Действительно. когда поменял на тип данных валюта, то выдал целое число.

Благодарю!
Страницы: 1
Наверх