我正在用Eclipse编写一个转换器,我的结果是9或10位十进制数字,我想把它变成2或3。 这是我的代码的一部分:
double gr = 0;
if (edtGr.getText().toString().length() > 0) {
gr = Float.parseFloat(edtGr.getText().toString());
}
if (edtNgr.getText().toString().length() > 0) {
gr = (Double.parseDouble(edtNgr.getText().toString())) / 1000000000;
}
edtNgr.setText("" + (gr * 1000000000));
edtGr.setText("" + gr);
此代码将克数转换为纳克数,我希望结果为2或3位小数。
答案 0 :(得分:2)
尝试
String.format("%.2f", gr * 1000000000);
小数点后3位,
String.format("%.3f", gr * 1000000000);
答案 1 :(得分:1)
对于2个小数位,将代码更改为
edtNgr.setText(""+ ((String.format("%.2f", (gr * 1000000000)))));
edtGr.setText("" + ((String.format("%.2f", gr))));
并且有3个小数点
edtNgr.setText("" + ((String.format("%.3f", (gr * 1000000000)))));
edtGr.setText("" + ((String.format("%.3f", gr))));
您也可以使用DecimalFormat
。 (使用3分)使用它的一种方法:
DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(3);
edtNgr.setText("" + df.format(gr * 1000000000));
edtGr.setText("" +df.format(gr));
了解详情
答案 2 :(得分:0)
您可以使用
double roundOff = Math.round(yourDouble * 1000.0) / 1000.0;
另一种方式
BigDecimal doubleVal = new BigDecimal("123.13698");
BigDecimal roundOff = doubleVal.setScale(2, BigDecimal.ROUND_HALF_EVEN);
答案 3 :(得分:0)
您可以使用NumberFormatter
之类的
NumberFormat formatter = NumberFormat.getInstance();
formatter.setMaximumFractionDigits(3);
然后将其格式化为
formatter.format(36.55468865)
这会将输出36.555
四舍五入55468865
到555
答案 4 :(得分:0)
(double)Math.round(value * 100000)/ 100000 ..由零个数表示的精度数。
或
double d = 12345.2145;
BigDecimal bd = new BigDecimal(d).setScale(3,RoundingMode.HALF_EVEN); d = bd.doubleValue();
根据所需的精度更改setScale方法中的第一个参数。