Ошибка точности при разборе двойной переменной с использованием StringTokenizer в Java - PullRequest
0 голосов
/ 22 марта 2011

Я использую класс StringTokenizer для чтения текстового файла. В текстовом файле есть пара двойных значений.

interest = Double.parseDouble(aString.nextToken());
System.out.println(interest);

Он хорошо отображается в консоли, однако, когда я пытаюсь напечатать его позже,

System.out.println("Fixed Daily Interest = " + customers[i].get_interest() + "\n");

Точность всегда теряется десятичной точкой. Например, одно из значений - 0,055, когда я печатаю его после анализа в первой части кода, оно отображается точно так же, как в консоли. Однако, в другом методе, попытка напечатать это дает мне 0,05, независимо от того, что я пытаюсь, не анализируя это как двойную переменную, используя DecimalFormat и т. Д. Может ли какая-нибудь добрая душа направить меня, какую ошибку я здесь делаю? Я действительно озадачен здесь.

Ответы [ 2 ]

1 голос
/ 22 марта 2011

Вы можете использовать DecimalFormat для получения точности в Java.

Читая немного больше об этом, вы можете найти этот пост , который может дать вам несколько указателей.По сути, если вам нужна большая точность, вам нужно перейти на специально разработанный класс, который обрабатывает это.В сообщении перечислено несколько вариантов.

0 голосов
/ 22 марта 2011

Попробуйте использовать BigDecimal, если вам требуется дополнительная точность. Если проблема заключается в чтении двойного значения, а затем при печати выводится другое значение, запомните проблему двоичных <-> представлений десятичных чисел. Некоторые десятичные числа не могут быть представлены в двоичном формате с ограниченной двоичной точностью. Также при работе с числами результат может быть напечатан иногда как 4,99997 вместо десятичного числа 5, проблема заключается в представлении этих чисел в двоичном виде.

Убедитесь, что число никогда не трогано, тогда результат печати должен быть всегда одинаковым, если вы используете toString() или непосредственно в System.out.println("" + number);.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...