diff --git a/task10/src/com/example/task10/Task10.java b/task10/src/com/example/task10/Task10.java index ad8eedab6..f83e6fc74 100644 --- a/task10/src/com/example/task10/Task10.java +++ b/task10/src/com/example/task10/Task10.java @@ -7,9 +7,19 @@ public static boolean compare(float a, float b, int precision) { // TODO корректно сравнивать два значения типа float с заданной пользователем точностью (параметр - количество знаков после запятой). // Функция должна корректно обрабатывать ситуацию со сравнением значений бесконечности. // Функция должна считать значения «не число» NaN (например 0.0/0.0) равными между собой. - - return a == b; + if (Float.isNaN(a) && Float.isNaN(b)) + return true; + + if (Float.isInfinite(a) || Float.isInfinite(b)) + return a == b; + + if (precision != 0) { + float tolerance = (float) Math.pow(10, -precision); + return Math.abs(a - b) <= tolerance; + } + + return a == b; } public static void main(String[] args) {