乘以两个小数位 - Java

时间:2015-04-02 06:40:39

标签: java

将double类型数乘以输出需要的两个Decimal Place

double creditCardPercentage = 0.03;
String renewalEventAmount = "2144.60";
double expectedRenewalAmount = 0;
expectedRenewalAmount = Double.parseDouble(renewalEventAmount) * creditCardPercentage;

expectedRenewalAmount的输出是64.338,那么我们如何用两个十进制格式化上面的输出

预期:

64.33

7 个答案:

答案 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.printfString.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

相关问题