Java-将小数点后的任何内容四舍五入*而不仅仅是%.2f*
正如高层所说。我被一个相当简单的问题困住了,但似乎我被困住了 例如: x=3.141 当我使用printf时(“x是:%.2f”,x)代码> 它吐出:Java-将小数点后的任何内容四舍五入*而不仅仅是%.2f*,java,printf,decimal,Java,Printf,Decimal,正如高层所说。我被一个相当简单的问题困住了,但似乎我被困住了 例如: x=3.141 当我使用printf时(“x是:%.2f”,x) 它吐出:X是3.14 为了计算州税,任何超过一美分的东西都需要四舍五入,所以3.141应该是3.15。是否有一个简单的printf我可以修改或一个额外的标签我可以添加?或者我需要绕一圈来计算额外的位吗?这是一个可能的解决方案: public static float roundUp(float num, int positions) { int tmp
X是3.14
为了计算州税,任何超过一美分的东西都需要四舍五入,所以3.141应该是3.15。是否有一个简单的printf我可以修改或一个额外的标签我可以添加?或者我需要绕一圈来计算额外的位吗?这是一个可能的解决方案:
public static float roundUp(float num, int positions) {
int tmp = ((int)(num*Math.pow(10, positions)));
tmp = tmp + 10 - tmp%10;
return ((float)(tmp/Math.pow(10, positions)));
}
你可以打电话得到你想要的
roundUp(num, 3);
或者,如果您想要一种不太通用的方法,也可以使用:
public static float roundUp(float num) {
int tmp = ((int)(num*1000.0f));
tmp = tmp + 10 - tmp%10;
return ((float)(tmp/1000.0f));
}
这是一个可能的解决方案:
public static float roundUp(float num, int positions) {
int tmp = ((int)(num*Math.pow(10, positions)));
tmp = tmp + 10 - tmp%10;
return ((float)(tmp/Math.pow(10, positions)));
}
你可以打电话得到你想要的
roundUp(num, 3);
或者,如果您想要一种不太通用的方法,也可以使用:
public static float roundUp(float num) {
int tmp = ((int)(num*1000.0f));
tmp = tmp + 10 - tmp%10;
return ((float)(tmp/1000.0f));
}
最简单的方法是在数字上加0.005
PS:请确保严格按照BigDecimal计算所有内容。不建议使用double表示金钱。最简单的方法是在数字上加0.005
Math.ceil(x * 100) * 0.01
PS:请确保严格按照BigDecimal计算所有内容。不建议使用double for money
Math.ceil(x * 100) * 0.01
避免神奇的四舍五入数字(是否需要添加0.9、0.99或0.999等)
避免神奇的四舍五入数字(是否需要添加0.9、0.99或0.999等)使用
printf
,而不是使用DecimalFormat
和四舍五入模式。天花板
:
DecimalFormat df = new DecimalFormat("#.##");
df.setRoundingMode(RoundingMode.CEILING);
String rounded = df.format(x)
System.out.printf("x is: %s", rounded);
不要使用
printf
,而是使用DecimalFormat
和RoundingMode。天花板
:
DecimalFormat df = new DecimalFormat("#.##");
df.setRoundingMode(RoundingMode.CEILING);
String rounded = df.format(x)
System.out.printf("x is: %s", rounded);
可能的重复我想如果你能算出一个具体的小数点限制,那就是重复。但不同的需求并不完全相同。可能的重复我想如果你能算出一个具体的小数点限制,它将是重复的。但不同的需求并不完全相同。简单问题的简单解决方案。谢谢你!!如果税正好是3.00,这不会导致税显示为3.01吗?简单问题的简单解决方案。谢谢你!!如果税正好是3.00,这不会导致税显示为3.01吗?