Java-双*整数算术显示,带两位小数或几位小数

Java-双*整数算术显示,带两位小数或几位小数,java,formatting,double,Java,Formatting,Double,Java新手。我正在为一个项目编写一个简单的程序。这是一个允许用户购买比萨饼的程序。它有一个运行总数和一个订单摘要在最后。我使用这些行来保存总计和小计: switch(mainMenuAnswer) //Switch statement to get correct pricing multiplied by # of desired pizza ordered { case 1: total = total + (pizzaPrices1[o

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和内存位的东西,但什么是一个好的解决方案呢


注意:priceArray是一个字符串数组,采用$#####格式。

由于price数组是一个字符串数组,因此不能为其指定数字格式。将其保留为双精度数组,并在末尾使用双精度到2精度的字符串转换。

由于price数组是字符串数组,因此不能为其指定数字格式。将其保留为双数组,并在结尾使用双精度到2精度的字符串转换。

使用11.2d进行双精度格式化,而数组是字符串。您可能希望使用一些字符串方法来按您希望的方式对其进行格式化


找到“.”,然后再向其中添加两个索引,并将其余索引切掉。

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


找到“.”,然后在其中再添加两个索引,并删除其余的索引。

对货币使用双精度是个坏主意(正如您所发现的)。你需要一个十进制的数据类型,或者只是把你所有的计算都保存在便士里。直到我用这个程序完成了一半,我才知道货币类,否则我会用it@Andremoniy因为我是第一个java类的C++,必须根据我的教授给我的程序指定一个特定的格式。(这就是程序的外观和格式为何如此),我可以向你保证,我知道循环是什么,还有很多其他的东西。我说你的评论毫无用处,因为那正是它的本来面目。我根本不在乎你从哪里买比萨饼,你也无权抱怨我的写作风格,因为我们需要严格遵守编程项目的格式(你当然不知道,但还是决定咆哮)我想补充一点,这个问题应该结束了,因为你没有提供真正的MCVE()@bankey看到它运行通常会让世界更容易理解;你可以玩它并实时调试它。包括你需要运行的所有东西(包括主方法)会给你一个更高的回答率,有时你会在把代码缩减到最小的示例时自己找到答案。在这种情况下,我会建议删掉所有的比萨饼,找到一个给出99.949999的方程式,然后尝试用双倍表示货币是个坏主意(正如你所发现的)你需要一个十进制的数据类型,或者只是把你所有的计算都保存在便士里。直到我用这个程序做了一半,我才知道货币类,否则我会用it@Andremoniy因为我是第一个java类的C++,必须根据我的教授给我的程序指定一个特定的格式。(这就是程序的外观和格式为何如此),我可以向你保证,我知道循环是什么,还有很多其他的东西。我说你的评论毫无用处,因为那正是它的本来面目。我根本不在乎你从哪里买比萨饼,你也无权抱怨我的写作风格,因为我们需要严格遵守编程项目的格式(你当然不知道,但还是决定咆哮)我想补充一点,这个问题应该结束了,因为你没有提供真正的MCVE()@bankey看到它运行通常会让世界更容易理解;你可以玩它并实时调试它。包括你需要运行的所有东西(包括主方法)会给你一个更高的回答率,有时你会在把代码缩减到最小的示例时自己找到答案。在这种情况下,我会建议删掉所有比萨饼的内容,找到一个给出99.949999的等式,然后尝试格式化它