2014-05-03 105 views
0

我有123.69727407930787989類型的號碼,我需要使用java將它存儲在mysql數據庫中。如何在mysql中插入長號碼

  1. 應該在java中使用的數據類型。
  2. 應該在mysql中使用的數據類型。

  3. 如果我想以xxx.xxxxx格式存儲,我是否需要將此編號舍入一遍。如何在java中以這種格式四捨五入數字

+2

在mysql的java和VARCHAR雙重應該工作 – phil652

+0

但後來我怎樣才能在mysql中該值運行聚合函數,如果我將它存儲在VARCHAR – Innovation

回答

0

RE 1的方法:你應該在java中使用java.math.BigDecimal

RE 2:應使用DECIMAL(M,d)在MySQL egfor 123.69727407930787989 DECIMAL數據類型(20,17 )其中M 1至65位和D爲0至30位

RE 3: (a)如果我想以xxx.xxxxx格式存儲數據,我是否需要舍入這個數字? (Ans。)它取決於你的要求你想要什麼

(b)如何在java中以這種格式舍入數字?

java.math.BigDecimal bigDecimal = new java.math.BigDecimal("123.69727407930787989",new java.math.MathContext(5)); 
+0

如果我採取十進制(3,17),那麼我的號碼應該始終以這種格式,就像我可以存儲或不存儲23.898?或者我需要以指定的格式進行更改。 – Innovation

+0

在DECIMAL(20,17)的情況下,可以插入0.0到999.9999999999999999。所以,只取M和D的值分別爲M和D的最大值,M> = D –

0

您可以在MySQL表中創建小數列(https://dev.mysql.com/doc/refman/5.1/en/precision-math-decimal-characteristics.html)。

要在Java中讀取/寫入列,請使用BigDecimal類。它具有用於舍入

public BigDecimal round(MathContext mc) 
+0

如果你能提供給我的例子,將大大better.Actually有時我得到的價值26.135235252524有時21.38740327440325703255783557有時29.32434,當我嘗試將其存儲在MySQL中,然後我得到com.mysql.jdbc.MysqlDataTruncation:數據截斷: 範圍值列 – Innovation

+0

http://stackoverflow.com/問題/ 5480804/mysql-cant-handle-large-values-even-with-decimal以十進制和舍入爲單位的最大數字示例。嘗試自己寫代碼,並在這裏發佈具體問題 – StanislavL