Кто-нибудь знает, что я сделал неправильно здесь? Я получил число с плавающей точкой, допустим, это 0,04. После формата он превращается в 0.03. По-видимому, выходной результат уже на 0,01 меньше входного.DecimalFormat возвращает неверный результат
Вот мой код:
float creditAvailableProportion = this.accountSummary != null ? (this.accountSummary.getCreditAvailable()/this.accountSummary.getCreditLimit()) : 0;
DecimalFormat decimalFormat = new DecimalFormat("#.##");
decimalFormat.setRoundingMode(RoundingMode.FLOOR);
float formattedCreditAvailableProportion = Float.parseFloat(decimalFormat.format(creditAvailableProportion));
return Math.min(1.0f, formattedCreditAvailableProportion);
Спасибо заранее.
'System.out.println (decimalFormat.format (0.04));' prints' 0.04'; вы вызываете его с некоторым значением меньше, чем '0.04' (который будет * настил * до' 0.03'). –
@ Long Можете ли вы показать нам, что значения 'this.accountSummary.getCreditAvailable()' и 'this.accountSummary.getCreditLimit()' - это то, что вы ожидаете, что их разделение составляет 0,04? – mapeters
Не форматируйте его. Просто округлите его до 2 десятичных знаков. Вы должны быть в порядке. –