Я согласен с Питером, я тоже не вижу, чтобы это произошло. Однако, если это продолжает происходить с вами, и если число десятичных дробей известно и зафиксировано в вашем сценарии использования в любом случае, использование «int» может быть решением, это даже быстрее, чем операции с плавающей запятой. Конечно, для представлений вам придется преобразовать их в плавающие точки.

я есть проблема для управления десятичного числа в Java (JDK 1.4).

У меня двадвойной чиселпервый а такжевторой (как вывод отформатированногострока). Я делаю сумму между первой и второй и получаю число с большим количеством десятичных цифр!

   final double first=198.4;//value extract by unmodifiable format method

   final double second=44701.2;//value extract by unmodifiable format method

   final double firstDifference= first+second; //I receive 44899.598 instead of 44899.6

   final double calculatedDifference=44900.1; // comparison value for the flow

    final double error=firstDifference-calculatedDifference;// I receive -0.50390605 instead 0.5

    if(Math.abs(error)<=0.5d)){
         //I must enter in this branch but the error not allows the correct flow!!!
    }
    /***
    * the flow of program is uncorrect and there's a very visible bug in business view
    */

Я предпочитаю не расти пороговое значение (0.5d) потому что я не в безопасности в аналогичной ситуации (когда я начал кодировать, спецификации говорили о0.1d в качестве значения сравнения). Если это единственное решение, значение0.9d самое безопасное значение для этой проблемы?

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

Какая-то идея (если есть возможность проверить строку кода, если это возможно;))?

Ответы на вопрос(5)

Ваш ответ на вопрос