如何在Java中使用double? (Android开发)

时间:2011-11-18 10:29:26

标签: java android sqlite

我使用以下方法从SQLite数据库返回值。

public String Totalsponsor() {
    // TODO Auto-generated method stub
    String[] columns = new String[] { KEY_SPONSOR, KEY_SWIMMERLAPS };
    Cursor c = ourDatabase.rawQuery("SELECT " + KEY_SWIMMERLAPS + " * "
            + KEY_SPONSOR + " AS result FROM " + DATABASE_TABLE  + " ORDER BY "+ KEY_SWIMMERLAPS+" DESC", null);

    String result = "";

    for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
        result = result + c.getDouble(0) + "\n";
    }

    return result;

}

如何在返回结果之前对结果进行舍入?

我试过了:

for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) { result = result + Math.round(c.getDouble(0)) + "\n"; }

但它似乎没有用(也许我还没有理解圆方法?)。

编辑:我似乎只是得到了第一个结果。

3 个答案:

答案 0 :(得分:1)

DecimalFormat df = new DecimalFormat("####.##"); // here define you can define how much precision you want.

for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) { 
  result = result + df.format(c.getDouble(0)) + "\n"; 
}

答案 1 :(得分:1)

请尝试以下操作。

DecimalFormat df=new DecimalFormat("0.00");
Double d=new Double("512.56789");

System.out.println(df.format(d));

会为您提供结果 512.57 ,如您所料。


在您的代码中使用它来满足您的要求。

答案 2 :(得分:0)

您可以使用Math.floor(),Math.round(),Math.ceiling()。 Javadocs可在此处获得解释: http://download.oracle.com/javase/6/docs/api/java/lang/Math.html