2012-04-11 2 views
-4

Я думаю, что вы видели в торговых центрах, они вычитать или добавить сумму на общую сумму покупки, как,Округление в Java

  • Если общая покупка 30,01, раунд, как 30,00
  • Если используемый общая сумма покупки составляет 30,03, округляется как 30.05.
  • Если ваша общая сумма составляет 30.07, раунд 30.05.
  • Если ваша общая сумма составляет 30,08, раунд 30,10.

Я знаю круглые и напольные и потолочные функции на Java. Но как я могу достичь вышеуказанных вещей? Есть ли функция по умолчанию или utils?

+1

Это домашнее задание? Если это так, пожалуйста, отметьте так. –

+5

И что вы нашли, когда введенный 'java float round' в это окно поиска вверху справа вверху? Пять тысяч хитов - это то, что я получил, наверняка вы могли бы найти _something_ в этом списке, чтобы удовлетворить :-) – paxdiablo

+3

Нам действительно нужен «автор вообще не занимался исследованиями и злоупотребляет SO как свой личный google» close kind ... – Voo

ответ

1

Прежде всего, когда вы манипулируете цена в розничной торговле (например, торговые центры), вы должны использовать целые или длинные и не плавать или двойной, потому что число всегда с 2 десятичными знаками, а лучший способ обработки всего в розничной торговле - с целыми значениями.

Так, например:

30.01f ---> 3001 
30.03f ---> 3003 

И так далее ... При том, что мы упростили намного способ обработки значений цен. После этого вы можете легко создать свой собственный алгоритм округления цены .

Здесь образец круглая функция цена, которая должна делать то, что вы хотите:

public static int roundPrice(int price) { 
     String strPrice = String.valueOf(price); 
     int len = strPrice.length(); 
     int lastDigit = Integer.valueOf(strPrice.substring(len -1)); 
     int toAdd = -lastDigit; 

     if(lastDigit > 7) 
      toAdd = 10 - lastDigit; 
     else if(lastDigit > 2) 
      toAdd = 5 - lastDigit; 

     return price + toAdd; 
    } 

А вот пример того, как вы можете использовать его:

public static void main(String[] ars) { 

     int[] nums = { 3001, 3003, 3007, 3008 }; 

     for(int n : nums) { 
      System.out.println(roundPrice(n)); 
     } 
    } 

Я не знаю, почему некоторые пользователи прокомментировали ваш вопрос, поскольку это тривиальный вопрос, и, как будто в этом форуме есть несколько других ответов, которые объясняют, что вы хотите ... Я даже не могу понять, почему у вас есть -5 для этого вопроса ... Тайны StackOverflow!

Смежные вопросы