Если вы хотите использовать собственные типы с плавающей запятой, лучшее, что вы можете сделать, это утверждать, что значения, выводимые вашей программой, не слишком сильно отличаются от набора опорных значений.
Точное определение «слишком много» полностью зависит от вашего приложения. Например, если вы вычисляете a + b
на разных платформах, вы должны найти, что эти два результата находятся в пределах точности станка друг для друга. С другой стороны, если вы делаете что-то более сложное, например, инверсию матрицы, результаты, скорее всего, будут отличаться больше, чем точность машины. Точное определение того, насколько близко можно ожидать результатов, является очень тонким и сложным процессом. Если вы точно не знаете, что делаете, возможно, безопаснее (и разумнее) определить степень точности, которая вам нужна в последующих приложениях, и убедиться, что результат достаточно точный.
Чтобы получить представление о том, как надежно вычислить относительную ошибку между двумя значениями с плавающей запятой, см. Этот ответ и руководство по ним с плавающей точкой:
Функции сравнения с плавающей запятой для C #