Насколько я знаю, точное сравнение не имеет особого смысла с значениями с плавающей запятой, поскольку то, что должно быть 0.0001, может быть чем-то вроде 0.0001000... 0001... Должен ли я реализовать свою собственную функцию сравнения, чтобы указать точность или существует ли распространенная практика для этого?
Раньше я использовал С# (который, я подозреваю, по-прежнему ошибочен, так как двойное значение может быть, вероятно, непригодным для представления 0.0001 вообще, даже задано как константа (как объяснил Майкл Боргвардт здесь)):
public static bool AlmostEquals(this double x, double y, double precision = 0.0001)
{
if (precision < 0.0)
throw new ArgumentException();
return Math.Abs(x - y) <= precision;
}
Должен ли я что-то делать в Scala?