From bf530d9067ccf096a2b1b7bdf4c5c5224e57caed Mon Sep 17 00:00:00 2001 From: Mimika <115660264+mimikamaxim@users.noreply.github.com> Date: Tue, 3 Oct 2023 22:03:48 +0500 Subject: [PATCH] task 02_10 done --- .../task10/src/com/example/task10/Task10.java | 22 +++++-------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/02-java-types/task10/src/com/example/task10/Task10.java b/02-java-types/task10/src/com/example/task10/Task10.java index 774d4b6e2..df181e8b2 100644 --- a/02-java-types/task10/src/com/example/task10/Task10.java +++ b/02-java-types/task10/src/com/example/task10/Task10.java @@ -3,24 +3,14 @@ public class Task10 { public static boolean compare(float a, float b, int precision) { - - // TODO корректно сравнивать два значения типа float с заданной пользователем точностью (параметр - количество знаков после запятой). - // Функция должна корректно обрабатывать ситуацию со сравнением значений бесконечности. - // Функция должна считать значения «не число» NaN (например 0.0/0.0) равными между собой. - - return a == b; - + if (Double.isNaN(a) && Double.isNaN(b)) return true; + if (Double.isInfinite(a) && Double.isInfinite(b)) + return Math.signum(a * b) == 1; + precision = precision == 0 ? 1 : precision; + return Math.abs(a - b) <= Math.pow(10, -precision); } public static void main(String[] args) { - float a = 0.3f; - float b = 0.4f; - float sum = a + b; - float c = 0.7f; - - boolean result = compare(sum, c, 2); - System.out.println(result); - + System.out.println(compare((0.4f + 0.3f), 0.7f, 2)); } - }