Java - double * int arithmatic显示,带有两位小数或几位小数

时间:2016-02-04 20:28:37

标签: java formatting double

Java新手。我正在为一个项目编写一个简单的程序。这是一个允许用户购买比萨饼的程序。它有一个运行总计和最后的订单摘要。我正在使用这些线来保持总和&小计:

switch(mainMenuAnswer) //Switch statement to get correct pricing multiplied by # of desired pizza ordered  
{            
    case 1:
        total = total + (pizzaPrices1[otherAnswer - 1] * count);
        miniTotal = pizzaPrices1[otherAnswer - 1] * count;
        break;

    case 2:
        total = total + (pizzaPrices2[otherAnswer - 1] * count);
        miniTotal = pizzaPrices2[otherAnswer - 1] * count;
        break;

    case 3:
        total = total + (pizzaPrices3[otherAnswer - 1] * count);
        miniTotal = pizzaPrices3[otherAnswer - 1] * count;
        break;

    case 4:
        total = total + (pizzaPrices4[otherAnswer - 1] * count);
        miniTotal = pizzaPrices4[otherAnswer - 1] * count;
        break;

    case 5:
        total = total + (pizzaPrices5[otherAnswer - 1] * count);
        miniTotal = pizzaPrices5[otherAnswer - 1] * count;
        break;

}

Total和miniTotal是以0.0开头的双打,而价格是##。##格式,后跟count,这是一个整数值。它们正在成倍增加。

有时候我会得到一个很好的答案,例如42.35美元(随机数),但有时我会得到:

 How many large pizzas?: 4

---------------------------------------------------------

Your current order total is $151.91

---------------------------------------------------------

Specialty Pizza Menu

1) Meat Lovers
2) BBQ Chicken
3) Hawaiian
4) Chicken-Bacon Ranch
5) Vegetarian
6) Exit Menu

Your choice?: 6

Order Summary:

Type                   Size          Quantity    Price
---------------------------------------------------------
Meat Lovers            Large         5           $99.94999999999999 
BBQ Chicken            Large         4           $51.96 

Order total: $151.91
---------------------------------------------------------

请注意,所有内容都被格式化(以防万一)到两位小数,除了" Price"之外的双值。我也很容易格式化它,但我不知道如何。要格式化的代码行是:

System.out.printf("%-22s %-13s %-11d %-2s \n" , typeArray[i], sizeArray[i], quantityArray[i], priceArray[i]); //Formatting

我尝试使用%-11.2d,但它给了我一个错误。谁知道发生了什么事?我认为它是变量double和memory bit的东西,但什么是一个好的解决方案?

注意:priceArray是一个STRING数组,格式为$ ##。## format。

2 个答案:

答案 0 :(得分:1)

由于price数组是一个字符串数组,因此无法为其指定数字格式。将它保存为双数组,并在结尾处使用双到2的十进制字符串转换。

答案 1 :(得分:1)

使用11.2d用于双重格式化,而您的数组是字符串。您可能希望使用某种字符串方法按照您希望的方式对其进行格式化。

https://docs.oracle.com/javase/7/docs/api/java/lang/String.html

查找"。"然后再添加两个索引并切断其余部分。