2016-02-11 2 views
1

Я младший в старшей школе. Нелегко выяснить, как использовать формат денег. Я делаю упражнение в Руководство по программированию на Java (второе издание), где я должен приглашать сотрудников на количество гамбургеров, картофеля и соды.Формат денег - как его использовать?

Fries составляет 1,09 доллара США, гамбургеры составляют 1,69 доллара США, а газированные напитки - 0,99 доллара США.

Вот мой код:

import java.util.Scanner; 
/** 
* Order pg. 101 
* 
* Garret Mantz 
* 2/10/2016 
*/ 
public class Order { 

public static void main(String[]args) { 

final double pburgers=1.69; 
final double pfries=1.09; 
final double psodas=0.99; 
final double ptax=0.065; 
double burgers; 
double fries; 
double sodas; 
double totaltax; 
double total; 
double tax; 
double tendered; 
double change; 

Scanner input = new Scanner(System.in); 


System.out.print("Enter the amount of burgers: "); 
burgers = input.nextDouble(); 
System.out.print("Enter the amount of fries: "); 
fries = input.nextDouble(); 
System.out.print("Enter the amount of sodas: "); 
sodas = input.nextDouble(); 
System.out.print("Enter the amount tendered: "); 
tendered = input.nextDouble(); 



totaltax = (burgers*pburgers)+(fries*pfries)+(sodas*psodas); 
tax = totaltax*ptax; 
total = totaltax + tax; 
change = tendered - total; 


System.out.println("Your total before tax is: \n" + totaltax); 
System.out.println("Tax: \n" + tax); 
System.out.println("Your final total is: \n" + total); 
System.out.println("Your change is: \n" + change); 
} 
} 

Я просто хочу, чтобы использовать формат денег, но я не знаю, как. Я уверен, что это глупый вопрос, но спасибо за помощь!

+0

Всего головы, вы должны ** никогда ** использовать числа с плавающей точкой для хранения валюты. Формат хранит данные в двоичном формате, так что он представляется как некоторое двоичное целое без знака (значимое) * с некоторой степенью двух. Поскольку он хранится в силе двух, а не десять, вы можете столкнуться с множеством проблем. Вместо этого используйте подход с фиксированной точкой (например, сохраните количество центов в 'long') [подробнее] (https://en.wikipedia.org/wiki/Floating_point) –

ответ

1

Измените свой Println на них и посмотреть, если это помогает:

System.out.format("Your total before tax is: $%-5.2f\n", totaltax); 
System.out.format("Tax: $%-5.2f\n", tax); 
System.out.format("Your final total is: $%-5.2f\n", total); 
System.out.format("Your change is: $%-5.2f\n", change); 

Существует также следующее:

NumberFormat formatter = NumberFormat.getCurrencyInstance(); 
String totalTaxString = formatter.format(totaltax); 
String taxString = formatter.format(tax); 
String totalString = formatter.format(total); 
String changeString = formatter.format(change); 

System.out.format("Your total before tax is: %s\n", totalTaxString); 
System.out.format("Tax: %s\n", taxString); 
System.out.format("Your final total is: %s\n", totalString); 
System.out.format("Your change is: %s\n", changeString); 

Выходные:

Your total before tax is: $8.53 
Tax: $0.55 
Your final total is: $9.08 
Your change is: $10.92 
+0

Это сработало отлично. Надеюсь, мой учитель согласится с этим, я думаю, она говорит о другом способе этого. –

+0

См. Мое редактирование; в java.text есть NumberFormat, который также помогает. Дайте мне знать, если вам нужна помощь в этом. –