Результат вычисления, вероятно, примерно такой, как 5.999999999994, поскольку результат с плавающей запятой не обязательно является целым числом. Когда вы приводите к типу int, вы усекаете его, и в результате получается 5. Для другого аналогичного набора аргументов вы можете увидеть результат 6.0000000000002, и он даст вам 6.
Но тот факт, что это так чувствительно к представлению с плавающей запятой, ставит под вопрос, почему вы думаете, что хотите этого - возможно, есть лучший способ сделать то, что вы хотите сделать. Например, приведенный выше ответ является правильным, это упрощает, а затем еще менее ясно, в чем смысл.
Чтобы действительно делать то, что, как я думаю, вы хотите сделать, вам не нужно использовать double
с или float
с. Вам нужно java.util.BigDecimal
- посмотрите, как это работает. Вы можете использовать его, чтобы «точно» умножить 5 и 1,2, чтобы получить 6.