我想要在小数点后只显示两位数字,我已经尝试但仍然是在小数点后得到多位数字:
itemamount = Double.parseDouble(text_cost_code.getText().toString());
txt_total.setText(new DecimalFormat("##.##").format(itemamount));
edit_qty_code.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
if (!edit_qty_code.getText().toString().equals("")
|| !edit_qty_code.getText().toString().equals("")) {
itemquantity = Double.parseDouble(edit_qty_code.getText().toString());
itemamount = Double.parseDouble(text_cost_code.getText().toString());
txt_total.setText(new DecimalFormat("##.##").format (itemquantity * itemamount));
} else { txt_total.setText("0.00");}}
答案 0 :(得分:3)
我不确定你的代码中你想要做什么,但是
String.format("%.2f", value);
应该有用。
答案 1 :(得分:2)
Rakesh使用此链接:
Show only two digit after decimal
i=348842.
double i2=i/60000;
DecimalFormat dtime = new DecimalFormat("#.##");
i2= Double.valueOf(dtime.format(time));
v.setText(String.valueOf(i2));
答案 2 :(得分:0)
试试这个,它可能对你有帮助。
float localresult =Float.parseFloat(itemquantity*itemamount);
BigDecimal bd = new BigDecimal(Double.toString(localresult));
bd = bd.setScale(2,BigDecimal.ROUND_HALF_UP);
bd.doubleValue();
然后将其设置为textview,textview.setText(“”+ bd.doubleValue();)
答案 3 :(得分:0)
好吧,如果十进制数字的值是动态的,如果不是,那么这是解决方案。 (此解决方案适用于未知动态值或已知值)
try {
Double rounded= new BigDecimal(Double.parseDouble(getdecimalvalue())).setScale(2, RoundingMode.HALF_UP).doubleValue();
textviewid.setText (String.valueOf(rounded) );
}
catch (Exception e){
textviewid.setText (getdecimalvalue());
}
对于最多2个小数,我将setScale第一个参数设为2。 假设getdecimalvalue()返回一个字符串。
对于动态假设,如果该值为“ 12.5”,则将抛出异常,并且在捕获中直接显示该值,因为该值仅在点后最多1个小数位。