繁体   English   中英

Java-具有两个小数位或几个小数位的double * int算术显示

[英]Java - double*int arithmatic displays with two decimals OR several decimal places

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
---------------------------------------------------------

请注意,除“价格”正下方的双精度值外,所有内容都被格式化(以防万一)到小数点后两位。 我也很容易格式化它,但是我不知道怎么做。 要格式化的代码行是:

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

我尝试使用%-11.2d但它给了我一个错误。 有人知道发生了什么吗? 我以为它是可变的double和memory位,但是什么是好的解决方案?

注意:priceArray是$ ##。##格式的STRING数组。

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

11.2d用于双重格式化,而数组是一个字符串。 您可能想使用某种字符串方法来格式化它,使其符合您的期望。

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

找 ”。” 然后再添加两个索引,并删除其余的索引。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM