【问题标题】:Decimal Places using double with toString, android使用带有toString,android的double的小数位
【发布时间】:2011-10-21 12:57:56
【问题描述】:

我正在创建一个简单的程序,它对用户在 EditText 视图中输入的值执行简单的数学函数。前两个 EditText 视图包含整数,最后一个可能是小数,因此答案也可能需要采用小数形式,因此我将 and (vis) 设置为双精度,但如何将小数位限制为四位?一切都运行良好,答案只是小数点后几位!

这是我的代码:

public void onClick(View v) {
            String a,b,t;
            double vis;

            EditText txtbox1 = (EditText)findViewById(R.id.A);
                EditText txtbox2 = (EditText)findViewById(R.id.B);
                EditText txtbox3 = (EditText)findViewById(R.id.t);
                TextView tv = (TextView) findViewById(R.id.Answer);

            a = txtbox1.getText().toString();
            b = txtbox2.getText().toString();
            t = txtbox3.getText().toString();

            vis = ((Integer.parseInt(a)*1) + (Integer.parseInt(b)*2)) /       (Double.parseDouble(t));
            tv.setText(double.toString(vis));       
    }
}

非常感谢!

【问题讨论】:

    标签: android double tostring


    【解决方案1】:

    您可以使用String.format() 来确保您的输出中只有4 个小数位。只需将最后一行替换为tv.setText(String.format("%.4f", vis));

    请参阅http://download.oracle.com/javase/tutorial/java/data/numberformat.html,了解有关如何为此目的使用String.format() 的更多详细信息。

    【讨论】:

      【解决方案2】:

      我认为现在回答有点晚了,但它可能对未来的目的有所帮助。

      如果我们有一个double 数字并且我们需要得到 4 个十进制值,我们可以将 double 乘以 10000,然后将 double 值转换为 integer 并再次反转为 double 并且将数字除以 10000。

      【讨论】:

        【解决方案3】:

        如需更多控制,请使用BigDecimal.round()。您可以使用所需的精度和舍入规则设置MathContext(0.5 向上舍入,0.5 向下舍入等)。

        double vis = 21.23456;
        
        tv.setText(new BigDecimal(vis).round(new MathContext(6, RoundingMode.HALF_UP)).toString());
        

        【讨论】:

          猜你喜欢
          • 2011-01-28
          • 2021-02-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-31
          • 2013-01-06
          • 1970-01-01
          相关资源
          最近更新 更多