Я прочитал этот вопрос Round a double to 2 decimal places Он показывает, как округлить число. Я хочу просто форматировать, печатать только два десятичных знака. Что у меня есть и то, что я пробовал:Как форматировать двойной ввод в Java без округления?
double res = 24.695999999999998;
DecimalFormat df = new DecimalFormat("####0.00");
System.out.println("Value: " + df.format(res)); //prints 24.70 and I want 24.69
System.out.println("Total: " + String.format("%.2f", res)); //prints 24.70
Так что, когда у меня есть 24.695999999999998 я хочу, чтобы отформатировать его как 24.69
Ищете [Math.floor (двойной)] (http://docs.oracle.com/javase/7/docs/ api/java/lang/Math.html # floor% 28double% 29) возможно? – OldCurmudgeon
Если вы представляете валюту, как бы вы ее не заметили, не могли бы вы вместо этого использовать 'long' и представлять точное значение (в гроши), а не прибегать к« двойному »и переносить с ошибкой маржу, вызванную плавающей точечные операции? – Bobulous