Я создал XYChart, где ось X - это имена, а ось Y - десятичные числа (числа с плавающей запятой).
Проблема в том, что когда я меняю списки диаграмм из таблицы с помощью слушателя, он отлично работает, но когда Я меняю его с помощью кнопки «вперед», это не так.
кнопка вперед, выбирает только следующий элемент таблицы, поэтому теоретически должен работать, поскольку выполнение этого вручную работает. Но это не так.
Отладка кода Я понял, что при вставке значений в диаграмму, вручную выбирая строку таблицы, десятичное число, вставленное внутри объекта XYChart, будет: 3.692
, но выбирая из кнопка приводит к чему-то вроде: 3.6919999999004857554
Я пробовал:
- Прямое использование float
- Прямое использование double
- Использование BigDecimal напрямую
- Установка шкалы bigDecimal на 3 значения и режима округления Half Up
- Создание float и double из BigDecimal
- Использование String.valueOf, а затем возврат с Float.valueOf
- Жесткое кодирование значения с плавающей запятой, например 2.2f (Результатом 2.200000000000000324234)
Все они производят «правильное» десятичное число, сохраненное в переменной (decimalNumber в коде), но когда вставлено в На диаграмме они показывают неправильное значение, что в конечном итоге приводит к тому, что мой пользовательский интерфейс ломается sh.
Это строка, в которой вставляются десятичные знаки
dataSerie.getData().add(new XYChart.Data(hour, decimalNumber));
Здесь вы можете увидеть, как добавление новой серии происходит должным образом ![Correct value](https://i.stack.imgur.com/QRzYT.png)
Здесь вы можете ясно увидеть, как добавление новой серии serires НЕ ДЕЛАЕТ go как ожидалось ![Incorrect value](https://i.stack.imgur.com/V67HY.png)
Как видите, 2.2f вставляется как 2.200000047683716
метод добавления значения в диаграмму
private void addDataToSerie(XYChart.Series dataSerie, String hora, float consumo) {
dataSerie.getData().add(new XYChart.Data(hora, 2.2f));
}