显示货币格式问题

时间:2015-09-21 12:59:28

标签: java android currency decimalformat

第一篇文章。我对软件开发一般都很陌生,并花了好几个小时试图弄清楚这件事。如您所见,我正在将double转换为String,然后将该值分配给textResultString)。我正确格式化以显示小数,但我无法弄清楚如何显示为货币。

根据我在网上找到的内容,看起来我可能不得不使用

NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.US);

然后以某种方式使用nf.format(),但它对我不起作用。任何指导都将不胜感激。

public void onCalculateDealOne(View v) {

    //get values from text fields
    EditText priceEntry = (EditText) findViewById(R.id.etListPriceDealOne);
    EditText unitsEntry = (EditText) findViewById(R.id.etNumberOfUnitsDealOne);
    EditText couponEntry = (EditText) findViewById(R.id.etCouponAmountDealOne);


    //get value from result label
    TextView result = (TextView) findViewById(R.id.perUnitCostDealOne);

    //assign entered values to int variables
    double price = Double.parseDouble(priceEntry.getText().toString());
    double units = Double.parseDouble(unitsEntry.getText().toString());
    double coupon = Double.parseDouble(couponEntry.getText().toString());

    //create variable that holds the calculated result and then do the math
    double calculatedResultDealOne = (price - coupon) / units;

    //convert calculatedResult to string
    String textResult = String.format("%.3f", calculatedResultDealOne);
    result.setText(textResult + " per unit");
    dealOneValue = calculatedResultDealOne;

    //hide the keyboard
    InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);

    //make deal one label visible
    result.setVisibility(View.VISIBLE);

}

2 个答案:

答案 0 :(得分:2)

这有两个简单的解决方案。您可以使用DecimalFormat对象,也可以使用NumberFormat对象。

我个人更喜欢Decimalformat对象,因为它可以让您更精确地控制格式化输出值/文本的方式。

有些人可能更喜欢NumberFormat对象,因为.getcurrencyInstance()方法比神秘的字符串格式更容易理解(例如" $#。00","#0.00 &#34)

public static void main(String[] args) {
    Double currency = 123.4;
    DecimalFormat decF = new DecimalFormat("$#.00");

    System.out.println(decF.format(currency));

    Double numCurrency = 567.89;
    NumberFormat numFor = NumberFormat.getCurrencyInstance();
    System.out.println(numFor.format(numCurrency));
}

此示例程序的输出如下:

  

$ 123.40

     

$ 567.89

答案 1 :(得分:1)

您需要使用格式化程序格式化您想要的双精度值,例如:

double money = 202.2
NumberFormat formatter = NumberFormat.getCurrencyInstance();
String moneyString = formatter.format(money);
System.out.println(moneyString);