Добрый день,
При введении с клавиатуры числа 14 программа должна вычесть из 2.8 число 2
подскажите, пожалуйста, почему программа выдает результатом 2.8 - 2 = 0.7999999999999998, и цвет, соответственно "желтый",
хотя значение должно быть 0.8 и программа должна выводить "красный".
при входном значении 4 все прекрасно работает и результат разницы 0.8 - 0 = 0.8,
однако для чисел 14, 24, 34 и т.д. результат разницы = 0.7999999999999998
package com.javarush.task.task04.task0416;
/*
Переходим дорогу вслепую
*/
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Solution {
public static void main(String[] args) throws Exception {
//напишите тут ваш код
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String a = reader.readLine();
double t = Double.parseDouble(a);
/* алгоритм заключается в том, что мы делим введеное число на 5
и присваиваем вещественный результат деления переменной t,
а целочисленную часть переменной z
если (t-z < 0.6) - светофор зеленый,
для оставшихся случаев если (t-z < 0.8) - световор желтый,
во всех остальных случаях он красный.
ниженаписанный код срабатывает для 4, однако для 14, 24 и т.д. разница (2.8 - 2 = 0.7999999999999998)
*/
t = t/5.0;
int z = (int) t;
System.out.println(t);
System.out.println(z);
if (t-z < 0.6) {
System.out.println("зеленый");
}
else if (t-z < 0.8) {
System.out.println(t-z);
System.out.println("желтый");
}
else System.out.println("красный");
}
}