2

对于一个项目,我有一个类似于银行的程序。“银行”读入一个文件,其中包含如下所示的帐户:
Miller
William
00001
891692 06 <----需要转换为双精度
的字符串 最后一个字符串必须转换为双精度,以便程序可以对其进行加减法等计算。
而且我必须以货币格式打印出来,即 $891692.06

到目前为止我有这个:

 public class Account {
      private String firstName, lastName;
      private int accountID;
      private String currentBalance; 

      private static int maxAccountID;

      public Account(String fN, String lN, int acct, String bal) {
         firstName = fN; lastName = lN;
         accountID = acct;
         currentBalance = bal;
         if(accountID > Account.maxAccountID)
            Account.maxAccountID = accountID;
      }     

  public double getBalance(){
        String [] s = currentBalance.split(" ");
        String balStr = "$"+s[0]+"."+s[1];
            double currentBalance = Double.parseDouble(balStr);
         return currentBalance;
      }
}

提前致谢!

4

4 回答 4

14

如果您的字符串表示double使用空格' '而不是小数点,您可以通过用点替换空格来修复它,如下所示:

String currentBalanceStr = "891692 06";
double currentBalanceDbl = Double.parseDouble(currentBalanceStr.replaceAll(" ","."));

链接到ideone。

于 2012-10-31T19:52:04.153 回答
4

Double用于余额计算不是一个好主意,使用 更有意义,因为BigDecimal它更精确。

您还可以使用以下类添加货币:

Locale enUSLocale =
    new Locale.Builder().setLanguage("en").setRegion("US").build();

Currency currencyInstance = Currency.getInstance(enUSLocale);

System.out.println(
    "Symbol for US Dollar, en-US locale: " +
    currencyInstance.getSymbol(enUSLocale));

请通过此链接了解更多详细信息。

于 2012-10-31T20:09:42.783 回答
3

好像你在做一些货币计算,所以总是使用 BigDecimal

BigDecimal balStr = new BigDecimal(String.replaceAll(" ",".");
于 2014-01-24T10:51:12.833 回答
0
String s="891692 06";
Double.parseDouble(s.replace(" ", ".")); would do the trick

您可以使用API 中的NumberFormatClass来获取货币信息。

于 2012-10-31T19:49:40.563 回答