在 java 中将价格四舍五入到最接近的 5cent 的倍数
Rounding price to the nearest multiple of 5cent in java
我是 java 编程新手。我想将价格四舍五入到最接近的小数点后两位。
例如
38.82 变成 38.80
38.87 变成 38.90
38.85 保持不变。
我做了例如1 和例如2 但结果只有小数点后一位。例如。 38.82 到 38.8
这是我的代码:
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));
}
}
我已经研究过该网络中专家的其他模型答案,但 none 确实回答了我的问题。设置为小数点后两位,我使用的是 DemicalFormat。我知道,但四舍五入,假设 38.83 到 38.85 和 38.87 到 38.90 是我真正想要的。这是我国正在使用的舍入系统。可以看看here.
请大家.. 请不要将我的问题更改为重复问题。您认为它是重复的,请向我询问更多信息。我可以向您保证它不是重复的(我认为...)
一种方法是将价格转换为美分,除以 5,四舍五入,再次乘以 5,然后转换回美元:
double rounded = Math.round(num * 100.0 / 5.0) * 5.0 / 100.0;
在处理金钱时,应避免使用 float 或 double 变量,而应使用整数数据类型,以避免因 float 或 double 值的计算不准确而出现问题。
您可以使用以下解决方案(处理 int 时):
public static int roundUp(int cents) {
int centsMod5 = cents%5;
if (centsMod5 > 0) {
cents += (5 - centsMod5);
}
return cents;
}
我是 java 编程新手。我想将价格四舍五入到最接近的小数点后两位。
例如
38.82 变成 38.80
38.87 变成 38.90
38.85 保持不变。
我做了例如1 和例如2 但结果只有小数点后一位。例如。 38.82 到 38.8
这是我的代码:
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));
}
}
我已经研究过该网络中专家的其他模型答案,但 none 确实回答了我的问题。设置为小数点后两位,我使用的是 DemicalFormat。我知道,但四舍五入,假设 38.83 到 38.85 和 38.87 到 38.90 是我真正想要的。这是我国正在使用的舍入系统。可以看看here.
请大家.. 请不要将我的问题更改为重复问题。您认为它是重复的,请向我询问更多信息。我可以向您保证它不是重复的(我认为...)
一种方法是将价格转换为美分,除以 5,四舍五入,再次乘以 5,然后转换回美元:
double rounded = Math.round(num * 100.0 / 5.0) * 5.0 / 100.0;
在处理金钱时,应避免使用 float 或 double 变量,而应使用整数数据类型,以避免因 float 或 double 值的计算不准确而出现问题。
您可以使用以下解决方案(处理 int 时):
public static int roundUp(int cents) {
int centsMod5 = cents%5;
if (centsMod5 > 0) {
cents += (5 - centsMod5);
}
return cents;
}