2015-09-21 1 views
3

Первый пост. Я новичок в разработке программного обеспечения в целом и потратил часы, пытаясь понять эту часть. Как вы можете видеть, я конвертирую double в String, а затем присваиваю это значение textResult (String). Я отформатировал его правильно, чтобы отобразить десятичные числа, но я не могу понять, как отображать как валюту.Отображение формата валюты Выпуск

Основываясь на том, что я нашел в Интернете, это выглядит как я, возможно, придется использовать

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); 

} 

ответ

1

Вы должны использовать форматировщик для форматирования двойного значения вы хотите, например:

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

Есть два простых решений этого. Вы можете использовать объект DecimalFormat, или вы можете использовать объект NumberFormat.

Я лично предпочитаю объект Decimalformat, потому что он дает вам более точный контроль над тем, как вы хотите отформатировать свое выходное значение/текст.

Некоторые могут предпочесть объект NumberFormat, потому что метод .getcurrencyInstance() понятнее, чем строгий строковый формат (например, «$ # .00», «# 0.00»).

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