我是java编程的新手。我想将价格四舍五入到最近的2位小数。
E.g。
38.82进入38.80这是我的代码:
import java.text.DecimalFormat;
public class RoundUp {
public static void main(String[] args){
DecimalFormat df = new DecimalFormat("#.##");
double num = 38.84;
System.out.println(df.format(Math.round(num*10.00)/10.00));
}
}
我已经在本网站的专家看过其他模型答案,但没有一个真正回答我的问题。设置为2位小数,我使用DemicalFormat。我知道,但数字四舍五入,让我们说38.83到38.85和38.87到38.90是我真正想要的。这是我国正在使用的舍入系统。可以查看here。
请大家......请不要将我的问题改成重复的问题。你认为它是一个重复的,请向我询问更多信息。我可以向你保证它不是重复的(我认为......)
答案 0 :(得分:3)
这样做的一种方法是将价格转换为美分,除以5,舍入为,再次乘以5并转换回美元:
double rounded = Math.round(num * 100.0 / 5.0) * 5.0 / 100.0;
答案 1 :(得分:2)
当你处理钱时,你应该避免使用float或double变量并使用整数数据类型,以避免由于浮点值或double值的计算不准确而导致的问题。
您可以使用以下解决方案(处理int时):
public static int roundUp(int cents) {
int centsMod5 = cents%5;
if (centsMod5 > 0) {
cents += (5 - centsMod5);
}
return cents;
}