如何在sqlite select语句中设置2位小数

SAN*_*SAN 1 java sqlite android

我有一个 sqlite 表,其中的金额字段带有 NUMERIC(10,5) 值(我知道数据类型在 sqlite 中意味着不多)。我想编写一个选择语句,以小数点后两位显示金额。

    id      name             type        notnull      dflt_value      pk   
------- --------------- ---------- ----------- -------------- --- 
0        _id              integer       0                            1    
1        name             varchar       1                            0    
2        amount           NUMERIC(10,5) 0                            0    

SELECT _id, name, amount FROM accounts
Run Code Online (Sandbox Code Playgroud)

是否可以在 select 语句中将金额转换为两位小数,以便我可以在应用程序中显示两位小数。我需要在 select 语句中进行格式化,不想更改表结构。提前致谢。

我使用以下代码来填充 android 中的列表视图

    cursor = dbAdapter.getAccountsTotals(); 
    startManagingCursor(cursor); 
    String[] from = new String[] { DbAdapter.KEY_ID, DbAdapter.KEY_NAME, DbAdapter.KEY_AMOUNT}; 
    int[] to = new int[] { R.id.dis1, R.id.dis2, R.id.dis3}; 
    SimpleCursorAdapter trans = new SimpleCursorAdapter(this, R.layout.accts_row, cursor, from, to); 
setListAdapter(trans); 
Run Code Online (Sandbox Code Playgroud)

因此从数据库获取后无法格式化结果。请让我知道有一种方法可以在上面的代码中分配格式化值,谢谢。

Rup*_*pok 5

SELECT _id, name, ROUND(amount,2) FROM accounts
Run Code Online (Sandbox Code Playgroud)

以下代码将告诉您如何做到这一点

    

公共类 TestListView 扩展 ListActivity {
  ...
  私有 DecimalFormat myCustDecFormatter = new DecimalFormat("########.00");
  ...
  ...
  /** 在第一次创建活动时调用。*/
  @覆盖
  公共无效onCreate(捆绑保存实例状态){
    ...
    ...
    ...
  }

私人无效填充数据(){
    /* 从数据库中获取所有行并创建项目列表 */
    /* 对于多个帐户,传入帐户名称?*/
    mEntryCursor = mDbHelper.fetchAllEntries();
    开始管理光标(mEntryCursor);

    // 创建一个数组来指定我们要在列表中显示的字段(仅TITLE)
    String[] from = new String[]{myDbAdapter.KEY_NMBR,myDbAdapter.KEY_DATE,myDbAdapter.KEY_DESCR,myDbAdapter.KEY_AMT};

    // 以及我们想要将这些字段绑定到的字段数组(在本例中只是 text1)
    int[] to = new int[]{R.id.txtnmbr, R.id.txtdate, R.id.txtdescr, R.id.txtamt};

    // 现在创建一个简单的光标适配器并将其设置为显示
    setListAdapter(new SimpleCursorAdapter(this, R.layout.entryrow, mEntryCursor, from, to) {
        @覆盖
        公共无效setViewText(TextView v,字符串文本){
          super.setViewText(v, convText(v, 文本));
        }

    });

  }

  私有字符串 convText(TextView v, 字符串文本) {
    开关 (v.getId()) {
      案例 R.id.txtamt:
        双 dbAmt;
        //dblAmt = Double.valueOf(text);
        dblAmt = mEntryCursor.getDouble(AMT_COLUMN);
        返回 myCustDecFormatter.format(dblAmt);
    }
      返回文本;
    }

}//结束TestListView