Как мне округлить дабл в Java?(Разработка Android) - PullRequest
0 голосов
/ 18 ноября 2011

Я использую следующий метод для возврата значений из базы данных 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 ]

1 голос
/ 18 ноября 2011
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 голос
/ 18 ноября 2011

Попробуйте следующее.

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

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

Даст вам результат 512.57 , как вы можете ожидать.


Используйте его в своемкод для соответствия вашим требованиям.

0 голосов
/ 18 ноября 2011

Вы можете использовать Math.floor (), Math.round (), Math.ceiling (). Javadocs доступен здесь с объяснением: http://download.oracle.com/javase/6/docs/api/java/lang/Math.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...