将double类型数乘以输出需要的两个Decimal Place
double creditCardPercentage = 0.03;
String renewalEventAmount = "2144.60";
double expectedRenewalAmount = 0;
expectedRenewalAmount = Double.parseDouble(renewalEventAmount) * creditCardPercentage;
expectedRenewalAmount的输出是64.338
,那么我们如何用两个十进制格式化上面的输出
预期:
64.33
答案 0 :(得分:3)
您应该使用BigDecimal
类,因为它具有浮点精度的内置处理:
BigDecimal creditCardPercentage = new BigDecimal(0.03);
String renewalEventAmountString = "2144.60";
BigDecimal renewalEventAmount = new BigDecimal(renewalEventAmountString);
BigDecimal expectedRenewalAmount = renewalEventAmount.multiply(creditCardPercentage);
expectedRenewalAmount = expectedRenewalAmount.setScale(2, BigDecimal.ROUND_HALF_DOWN);
System.out.println(expectedRenewalAmount); // prints 64.33
使用BigDecimal
处理格式化的一个好处是,它允许您将代码与业务逻辑分开,即从输出结果的视图代码向下舍入到2个小数位。用户。
答案 1 :(得分:2)
您可以使用NumberFormat.getNumberInstance().format(expectedRenewalAmount)
来使用系统属性格式化值。您也可以修改NumberFormat
,根据需要指定小数位数。
或者您可以使用System.out.printf
或String.format
格式化值...
String value = String.format("%.2f", expectedRenewalAmount);
答案 2 :(得分:2)
有几个答案建议printf
;但如果您不想立即打印答案,可以同样方式使用String.format
:
String formattedString = String.format("%.2f", expectedRenewalAmount);
现在您可以根据需要打印出结果,或者您可以在Swing文本窗口中显示结果,或者将所有零值更改为快乐的面孔,或者使用生成的字符串执行您喜欢的任何其他操作,您可以将其设置为“#”。与printf
。
答案 3 :(得分:1)
您可以将printf()
功能与%f
:
System.out.printf("%.2f", expectedRenewalAmount);
在这里你可以找到Alvin Alexander的一个漂亮的printf format cheat sheet,它可以帮助你(希望是其他人)很多。
答案 4 :(得分:0)
打印时尝试此操作:
System.out.printf("%.2f", expectedRenewalAmount);
答案 5 :(得分:0)
您可以使用
DecimalFormat df = new DecimalFormat("#.00");
double creditCardPercentage = 0.03;
String renewalEventAmount = "2144.60";
double expectedRenewalAmount = 0;
expectedRenewalAmount = df.format(Double.parseDouble(renewalEventAmount) * creditCardPercentage);
答案 6 :(得分:0)
您可以使用minimumFractionDigit
至0
public class Test {
public static void main(String[] args) {
System.out.println(format(14.0184849945)); // prints '14.01'
System.out.println(format(13)); // prints '13'
System.out.println(format(3.5)); // prints '3.5'
System.out.println(format(3.138136)); // prints '3.13'
}
public static String format(Number n) {
NumberFormat format = DecimalFormat.getInstance();
format.setRoundingMode(RoundingMode.FLOOR);
format.setMinimumFractionDigits(0);
format.setMaximumFractionDigits(2);
return format.format(n);
}
}
请在下面找到参考链接。
Java: Use DecimalFormat to format doubles and integers but keep integers without a decimal separator