[英]android edittext textwatcher format phone number like xxx-xxx-xx-xx
[英]Getting form DB XXX.0E0 ( XX stand for a number)
我正在嘗試使用 JDBCTamplate 查詢 select 語句。 select 聲明:
SELECT currency, SUM(amount) AS total
FROM table_name
WHERE user_id IN (:userIdList)
GROUP BY currency
DB Table 有三列:
以表為例
user_id currency amount
1 EUR 9000
2 EUR 1000
3 USD 124
當我嘗試運行此代碼時
namedParamJDBCTemplate.query(query,
new MapSqlParameterSource('user_id', userIdList),
new ResultSetExtractor<Map>() {
@Override
public Map extractData(ResultSet resultSet) throws SQLException, DataAccessException {
HashMap<String,Object> mapRet = new HashMap<String,Object>();
while(resultSet.next()){
mapRet.put(resultSet.getString("currency"), resultSet.getString("total"));
}
return mapRet;
}
});
我得到的結果集為 map,但金額的結果如下所示:
EUR -> 10000.0E0
USD -> 124.0E0
當我在數據庫中運行相同的查詢(而不是通過代碼)時,結果集很好並且沒有'0E0'。
如果沒有'0E0',我怎樣才能只得到 EUR -> 10000 和 USD-> 124?
.0E0
是數字的指數,我認為。 所以124.0E0
代表 124.0 乘以 10 的 0 次方(寫成 124 x 10^0)。 任何 0 次方都是 1,所以你得到 124 x 1,當然,這是正確的值。
(例如,如果是 124.5E3,則表示 124500。)
這種表示法更常用於處理大數,因為 5436.7E20 比 543670000000000000000000 更具可讀性。
在不了解您的數據庫背景的情況下,我只能假設這種表示法來自將數字字段轉換為字符串(在result.getString("total")
中)。 因此,您應該問自己,如果您真的需要將結果作為字符串(或者只使用.getFloat
左右,同時更改您的 HashMap 類型)。 如果是這樣,您仍然有一些可能性:
稍后將值轉換為字符串 → 例如String.valueOf(resultSet.getFloat("total"))
截斷.0E0
→ 例如resultSet.getString("total").replace(".0E0", "")
(注意,如果由於某種原因,你得到另一個像.5E3
這樣的后綴,這當然不起作用;它也將切斷小數點后的任何位置)
也許找到一個數據庫 JDBC 或抑制E
表示法的驅動程序設置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.