Я работаю с большим приложением данных и столкнулся с ошибкой округления, которую я не могу исправить.Код в основном выглядит следующим образом:
proc sql;
select round(amount,.01) - round(amount * (percentage/100),.01) as amount
from data;
quit;
Я пробовал различные способы исправления, но, похоже, все они приводят к другим ошибкам округления в другом направлении.Для строки, которая выдает количество ошибок = 56,45 и процент = 10. Я получаю результат, равный 50,80, и надеюсь, что результат будет равен 50,81.Я не могу принять ошибку округления, поскольку существует отдельный процесс, который отменяет транзакции, у которых нет ошибки округления, и, в конце концов, сторнирования плюс деталь, вызывающая ошибку округления, должны равняться нулю.
Код Iпробовал:
select round((((100-percentage)/100)*amount), .01)
select round(amount,.01) - round(amount * (percentage/100),.001) as amount
второй из которых устраняет проблему, но создает три ошибки округления в другом направлении.
Любая помощь очень ценится.
Спасибо.