2013-07-18 2 views
0

У меня есть BEA WebLogic Server 8.1 SP5 работает на экземпляре JRockit со следующей версии Java:Casting INT двойной вопрос в JRockit

* Java -version Java версии "1.4.2_10" Java ( TM) 2 Runtime Environment, Standard Edition (сборка 1.4.2_10-b03) BEA JRockit (R) (сборка R26.3.0-32-58710-1.4.2_10-20060308-2022-Linux-ia64,) *

Я сталкиваюсь с проблемой, когда выполняется следующий код:

int debt = ; // сумма в центах; System.out.println (((двойной) долг18/100)); // сумма в евро

отпечатанного результата 270,03000000000003

Я уверен, что это виртуальная машина ошибка, так как это наблюдается на данном JRockit машине.

Вы сталкиваетесь с аналогичной проблемой в прошлом?

Не могли бы вы рассказать мне о менее склонном к ошибкам способе передать желаемое значение двойной переменной, желательно с использованием стандартных java-библиотек?

ответ

0

Я знаю, что это довольно старый, но у меня есть ответ, и, возможно, это поможет кому-то в будущем. Я использовал объект DecimalFormat для хранения только цифр, которые были полезны для меня. Нужно было использовать только один десятичный знак, и это всегда было правильно, даже когда ошибка появилась, так что это нормально для меня.

Код следующее:

String pattern = "##0.0#"; 
DecimalFormatSymbols separator = new DecimalFormatSymbols(); 
separator.setDecimalSeparator('.'); 
DecimalFormat decimalFormatter = new DecimalFormat(pattern, separator); 

int debt = 27003; //amount in cents; 
System.out.println(decimalFormatter.format(((double) debt18/100))); 
Смежные вопросы