用小数点计数变化(可能是简单的解决方案)

Posted

技术标签:

【中文标题】用小数点计数变化(可能是简单的解决方案)【英文标题】:Counting Change with decimal point (probably simple solution) 【发布时间】:2015-02-03 20:07:21 【问题描述】:

我有以下代码(我不是很懂计算机,所以要温柔),用户应该能够输入单个硬币数量,程序会告诉用户他们在所述硬币数量中有多少钱。

import java.util.*;

public class Coins 
  public static final Scanner CONSOLE = new Scanner(System.in);

  public static void main(String[] args) 

    System.out.println ("Lab 2 by Maria T Williams\n");

    quarterAmount( );
    dimeAmount( );
    nickelAmount( );
    pennyAmount( );
  

  public static void quarterAmount( ) 
    System.out.print("Enter the number of quarters: ");
    int quarterNumber = CONSOLE.nextInt( );
    double amount = quarterNumber * 0.25;
    System.out.print(quarterNumber + " You have $" + amount);
    System.out.println(" worth of quarters.");
  

  public static void dimeAmount( ) 
    System.out.print("Enter the number of dimes: ");
    int dimeNumber = CONSOLE.nextInt( );
    double amount = dimeNumber * .10;
    System.out.print(dimeNumber + " You have $" + amount);
    System.out.println(" worth of dimes.");
  

  public static void nickelAmount( ) 
    System.out.print("Enter the number of nickels: ");
    int nickelNumber = CONSOLE.nextInt( );
    double amount = nickelNumber * 0.05;
    System.out.print(nickelNumber + " You have $" + amount);
    System.out.println(" worth of nickels.");
  

  public static void pennyAmount( ) 
    System.out.print("Enter the number of pennies: ");
    int pennyNumber = CONSOLE.nextInt( );
    double amount = pennyNumber * 0.01;
    System.out.print(pennyNumber + " You have $" + amount);
    System.out.println(" worth of pennies.");
  

如果我输入的金额在 100 位的数字不是“0”,我很好。但如果我输入,比如说,两个季度,我会得到“0.5 美元”而不是“0.50 美元”。

【问题讨论】:

如何保持内部总和以美分为单位并将最终总和转换回#.##? 使用System.out.printf(...)而不是out.println。对浮点数使用格式化程序,例如 %0.2f。要么使用 NumberFormat getCurrencyInstance。 【参考方案1】:

您可以使用DecimalFormat 强制将数字格式化为您喜欢的格式。例如:

DecimalFormat df = new DecimalFormat("#.00");
double amount = dimeNumber * .10;
System.out.print(dimeNumber + " You have $" + df.format(amount) + " worth of dimes.");

【讨论】:

任何我尝试添加该代码的地方都会得到这个:文件:C:\Users\Theria\Downloads\Coins.java [行:29] 错误:DecimalFormat 无法解析为类型 @Maria 由于DecimalFormat 不在java.lang 包中,您应该完全限定它(即使用java.text.DecimalFormat)或在您的之前添加一个导入语句(import java.text.DecimalFormat;)类声明。【参考方案2】:

在输出计算结果时,您可以像这样使用DecimalFormat

    DecimalFormat f = new DecimalFormat("#0.00");
    System.out.println(f.format(dimeNumber));

【讨论】:

文件:C:\Users\Theria\Downloads\Coins.java [行:29] 错误:DecimalFormat 无法解析为类型 我可能把代码放错地方了?再次,非常计算机文盲 尝试添加导入:import java.text.DecimalFormat;

以上是关于用小数点计数变化(可能是简单的解决方案)的主要内容,如果未能解决你的问题,请参考以下文章

Python - 用反向计数器附加行号

Python - 用反向计数器附加行号

PHP接口返回值小数科学计数法的解决方法

PHP接口返回值小数科学计数法的解决方法

PHP接口返回值小数科学计数法的解决方法

PHP接口返回值小数科学计数法的解决方法