Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用double和toString的小数位数,android_Android_Double_Tostring - Fatal编程技术网

使用double和toString的小数位数,android

使用double和toString的小数位数,android,android,double,tostring,Android,Double,Tostring,我正在创建一个简单的程序,对用户在EditText视图中输入的值执行简单的数学函数。前两个EditText视图包含整数,最后一个可以是十进制,因此答案可能也需要是十进制形式,因此我将and(vis)设置为双精度,但如何将小数位数限制为四位?一切正常,答案只有很多小数位 这是我的密码: public void onClick(View v) { String a,b,t; double vis; EditText txtbo

我正在创建一个简单的程序,对用户在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));       
    }
}

非常感谢

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


有关如何使用
String.format()。只需将最后一行替换为
tv.setText(String.format(“%.4f”,vis))


有关如何使用
String.format()
的详细信息,请参阅。

有关更多控制,请使用
bigdecim.round()
。您可以使用所需的精度和舍入规则设置
MathContext
(.5为向上舍入,vs.5为向下舍入,以此类推)


要获得更多控制,请使用
BigDecimal.round()
。您可以使用所需的精度和舍入规则设置
MathContext
(.5为向上舍入,vs.5为向下舍入,以此类推)


我认为现在回答这个问题有点晚了,但这可能对将来有所帮助


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

我想现在回答有点晚了,但这可能对未来有所帮助

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

double vis = 21.23456;

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