第一篇文章。我对软件开发一般都很陌生,并花了好几个小时试图弄清楚这件事。如您所见,我正在将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);
}
答案 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);