Java 输出不正确的总输出
如果您输入,我当前的程序将订购比萨饼Java 输出不正确的总输出,java,Java,如果您输入,我当前的程序将订购比萨饼 moho 哪种是中等比萨、橄榄、火腿、橄榄的价格输出应为: Medium pizza with,olives,ham,olives,£7.00 然而,我得到: Your order is: Medium pizza with,olives,ham,olives,£6.999999999999999 如何使其打印正确的输出?我已经通读了代码,但似乎不明白为什么 public class pizza { public static void
moho
哪种是中等比萨、橄榄、火腿、橄榄的价格输出应为:
Medium pizza with,olives,ham,olives,£7.00
然而,我得到:
Your order is: Medium pizza with,olives,ham,olives,£6.999999999999999
如何使其打印正确的输出?我已经通读了代码,但似乎不明白为什么
public class pizza {
public static void main(String[] args){
pizzaServiceA();
}
public static void pizzaServiceA(){
Scanner input = new Scanner(System.in);
double total = 0;
System.out.println("Enter order:");
String order = input.next();
String pizza = "Your order is: ";
if (order.equals("quit")){
System.out.println("Program exiting.");
System.exit(0);
}
boolean size = false;
for (int x = 0; x < order.length(); x++){
if (order.charAt(0) == 'm' || order.charAt(0) == 'l'){
if (order.charAt(x) == 'm'){
total +=4.00;
pizza += "Medium pizza with,";
size = true;
}
else if (order.charAt(x) == 'l'){
total +=5.00;
pizza +="Large pizza with,";
}
else if (order.charAt(x) == 'h'){
pizza +="ham,";
if (size) total += 1.40;
else total +=2.10;
}
else if (order.charAt(x)== 'o'){
pizza +="olives,";
if(size) total +=0.80;
else total +=1.20;
}
else if (order.charAt(x)=='p'){
pizza+="pineapple,";
if(size) total +=1;
else total+=1.50;
}
else if (order.charAt(x)=='s'){
pizza+="spinach,";
if(size) total +=0.80;
else total+=1.20;
}
else if (order.charAt(x)=='m'){
pizza +="mozarella,";
if(size) total =+ 1;
else total+=1.50;
}
}
else {
System.out.println("Your first character must be m(medium) or l(large)");
}
}
System.out.println(pizza +"£" + total + "0");
}
}
公共级比萨饼{
公共静态void main(字符串[]args){
比萨饼a();
}
公共静态无效pizzaServiceA(){
扫描仪输入=新扫描仪(System.in);
双倍合计=0;
System.out.println(“输入订单:”);
字符串顺序=input.next();
String pizza=“您的订单是:”;
if(order.equals(“退出”)){
System.out.println(“程序退出”);
系统出口(0);
}
布尔大小=false;
对于(int x=0;x
注意:我知道我可能没有以一种有效的方式编写这段代码,因为我只是Java的初学者,我正在努力学习 这是使用二进制浮点类型表示精确货币值的陷阱的缩影 为了过上轻松的生活(特别是考虑到你是初学者),使用整型(例如
long
)并使用便士
有关更多详细信息,请参见“如果您想尝试脏衣服”:
double total = 651.5176515121351;
total = Math.round(total * 100);
total = total /100;
有很多选择:
String result = String.format("%.2f", total );
有很多方法可以进行取整等。不过,请看一下使用数学库中的BigDecimal的方法。希望这有帮助 例如。。src:-欢迎营救
import java.text.*;
import java.math.*;
public class addCurrency{
public static void main(String[] args) {
BigDecimal val1 = new BigDecimal("12.52");
BigDecimal val2 = new BigDecimal("17.21");
BigDecimal tot = val1.add(val2);
System.out.println(NumberFormat.getCurrencyInstance().format(tot));
}
}
public class fungsi_umur{
乌穆尔(塔欣拉希尔市中心、塔汉斯卡朗市中心){
int umur=塔汉斯卡朗-塔汉拉希尔;
系统输出打印(“Masukan umur:”);
系统输出打印(“Masukan nama:”);
如果(第12号城市轨道和第18号城市轨道){
System.out.println(“Umur Saya=“+Umur”);
系统输出打印(Saya Adalah Dewasa);umur(tahunlahir,Tahunsakarang);
系统输出打印(“umur>18”);umur(tahunlahir,Tahunsakarang);
}
}
公共静态void main(字符串[]args){
}
}
@ΦXocę웃Пepeúpaツ 感谢您的宝贵意见:)如果您想强制结果始终为$?.00,这是一个很好的解决方案。如果价格变为5.83美元,则四舍五入为6.00美元。所以我认为,如果你的价格变为小数,这不是所有时间的解决方案。@MichaelSeltene nope 5.83*100=583轮583=583,然后583/100=5.83,这样就行了。
public class fungsi_umur {
public static void umur(int tahunlahir, int tahunsekarang) {
int umur = tahunsekarang - tahunlahir;
System.out.print("Masukan umur :");
System.out.print("Masukan nama :");
if (umur <= 12){
System.out.print("Umur Saya = "+umur);
System.out.print("Saya Adalah Anak Anak");
System.out.print("umur<= 12 ");umur(tahunlahir,tahunsekarang);
}else if (umur > 12 && umur <= 18){
System.out.println("Umur Saya = "+umur);
System.out.println("Saya Adalah Remaja");umur(tahunlahir,tahunsekarang);
System.out.print("umur > 12 && umur <= 18");umur(tahunlahir,tahunsekarang);
}else if (umur > 18){
System.out.println("Umur Saya = "+umur);
System.out.println("Saya Adalah Dewasa");umur(tahunlahir,tahunsekarang);
System.out.print("umur > 18");umur(tahunlahir,tahunsekarang);
}
}
public static void main(String[] args) {
}
}