如何强制小数点后的两位数
我有以下TextView,它始终显示$ 0.00,除非在单击按钮并保存到此TextView后进行任何计算。
当我运行应用程序时,它显示$ 0.0(这将起作用,除了我正在使用美元和美分,我希望它显示小数后的两位数,除非两个数字都是00)
我正在使用SharedPreferences
,这是我在应用程序中的代码:
onCreate()
float totalTollAmount = 0; tollAmount = (EditText) mFrame2.findViewById(R.id.etToll); //where the amount is entered tollAmount.setFilters(new InputFilter[] {new DecimalFilter(6, 2)}); tvTotalAmountLabel = (TextView) mFrame2.findViewById(R.id.tvTotalAmount); //holding total amount if (Float.toString(prefs.getFloat("dblTollAmount", 0)) != "0.0") { tollAmount.setText(Float.toString(prefs.getFloat("dblTollAmount", 0))); } tvTotalAmountLabel.setText("$" + Float.toString(prefs.getFloat("totalTollAmount", 0))); //retrieves the total toll amount and displays btnCalc.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { strTollAmount = tollAmount.getText().toString(); strInfName = nameOfInf.getText().toString(); String k = ""; if (strTollAmount.length() != 0 && strInfName.length() != 0) { float dblTollAmount = Float.parseFloat(strTollAmount); submitInfo(dblTollAmount); } Toast.makeText(getActivity(), k, Toast.LENGTH_SHORT).show(); } }); private void submitInfo(float toll) { y = "TEST"; if (y != null) { editor.putString("someId", y); totalTollAmount = round(toll + prefs.getFloat("totalTollAmount", 0)); tvTotalAmountLabel.setText("$" + Float.toString(totalTollAmount)); } else { editor.putString("someId", ""); } editor.putString("previous-trip", y); editor.putFloat("totalTollAmount", round(totalTollAmount)); //editor.commit(); removed on 8/3 if (nameOfInf != null && nameOfInf.length() > 0) { // added on 8/3... //Clear out this value from Enter Data tab ONLY if Calculate happens } if (tollAmount != null && tollAmount.length() > 0) { //Clear out this value from the Enter Data tab ONLY if Calculate happens } editor.commit(); //added on 8/3 } private float round(float amount){ return Float.parseFloat(new DecimalFormat("###.##").format(amount)); }
onDestroy
方法:
@Override public void onDestroy(){ super.onDestroy(); Log.i("OnDestroy", "Logged"); if(nameOfInf != null && nameOfInf.length() > 0) { editor.putString("strInfName", nameOfInf.getText().toString()); } if(tollAmount != null && tollAmount.length() > 0) { editor.putFloat("dblTollAmount", Float.parseFloat(tollAmount.getText().toString())); } editor.commit(); }
它应该做什么:每当我点击calculate
按钮时,应用程序应该采用EditText etToll
上的etToll
并添加到TextView tvTotalAmount
上已有的值,并且每次都会继续这样做。
虽然TextView的原始值是0.00美元,但它只显示0.0美元。 我想在EditText和TextView上显示小数点后的两位数,因为我将使用美元和分数。
我该如何解决我面临的问题?
如果需要完整代码,请告诉我。
在你的代码中使用它
DecimalFormat form = new DecimalFormat("0.00"); String FormattedText=form.format(your value);
将它设置为Edittext ..它将工作