我想你在购物中心看到过,他们会在你的总购买金额中扣除或增加一些金额,例如,
- 如果您的总购买量为 30.01,则四舍五入为 30.00
- 如果您的总购买量为 30.03,则四舍五入为 30.05。
- 如果您的总购买量为 30.07,则四舍五入为 30.05。
- 如果您的总购买量为 30.08,则四舍五入为 30.10。
我知道 Java 中的舍入、地板和 ceil 函数。但是我怎样才能实现上述目标呢?是否有任何默认功能或实用程序可用?
我想你在购物中心看到过,他们会在你的总购买金额中扣除或增加一些金额,例如,
我知道 Java 中的舍入、地板和 ceil 函数。但是我怎样才能实现上述目标呢?是否有任何默认功能或实用程序可用?
首先,当您在零售环境(如商场)中操纵价格时,您应该使用整数或长整数,而不是浮点数或双精度数,因为该数字始终为 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之谜!
看看DecimalFormat。这里的例子。
我认为这就是您要查找的内容:DecimalFormat查找RoundingMode