помощь в округлении чисел - PullRequest
3 голосов
/ 09 января 2010

float per = (num / (float) totbrwdbksint) * 100;

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

Ответы [ 5 ]

5 голосов
/ 09 января 2010

Вы должны сделать это как часть форматирования - само число с плавающей запятой не имеет понятия «два десятичных знака».

Например, вы можете использовать DecimalFormat с шаблоном "# 0.00":

import java.text.*;

public class Test
{
    public static void main(String[] args)
    {
        float y = 12.34567f;
        NumberFormat formatter = new DecimalFormat("#0.00");
        System.out.println(formatter.format(y));
    }
}
1 голос
/ 09 января 2010

Вы должны быть осторожны, этот ответ не относится к Java, он относится ко всем аспектам десятичных дробей во многих языках программирования, поэтому он является общим. Опасность заключается в округлении чисел, вот так, и это произошло по моему опыту, и я знаю, что с этим может быть сложно справиться:

  • Предположим, что вы имеете дело с ценами на товары, цена, которую вы получаете от розничного поставщика, может отличаться от цены, которую компьютер сообщает вам, конечно, она незначительно мала, но может привести к большим деньгам.
  • Добавление налога с продаж к цене может быть как положительным, так и отрицательным, это может повлиять на операционную маржу балансовых отчетов о прибылях и убытках ...

Если вы находитесь на такой арене развития, то мой совет - не корректировать путем округления вверх / вниз ... он может не отображаться при небольших продажах предметов, но он может появиться в другом месте ... бухгалтер заметит это ... Лучше всего просто укоротить это, например 29.475342 -> 29.47 и оставьте это, почему? .005 может привести к большой прибыли / убытку.

В сочетании с тем, что здесь обсуждается ... электронные списки и регистры используют свой собственный вариант обработки этого сценария, вместо того, чтобы иметь дело с XX.XXXXXXXXXX (например, с компьютерами, которые имеют 27/28 десятичных знаков), он имеет дело с XX .XX.

Это то, что нужно иметь в виду ...

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

1 голос
/ 09 января 2010

Если вам нужно контролировать, как выполняется округление, вы должны убедиться, что BigDecimal ist имеет несколько режимов округления.http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigDecimal.html

1 голос
/ 09 января 2010

Как Джон подразумевает , формат для отображения. Наиболее краткий способ сделать это, вероятно, использовать класс String.

float f = 70.9999999f;
String toTwoDecPlaces = String.format("%.2f", f);

Это приведет к строке "71.00"

0 голосов
/ 09 января 2010

Вы можете использовать форматированный метод печати System.out.printf, чтобы выполнить форматированную печать, если это то, что вам нужно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...