2

(JDBCを使用して)Mysqlに78.9を挿入すると、79に切り上げられますか?これは正常ですか...もしそうなら、どうすればこれが起こらないようにすることができますか。

詳細:

列名:num データ型:decimal(12,0) *上記のアイテムはphpMyAdminからコピーされました

クエリは

stmt.executeUpdate("INSERT INTO triples(sub_id, pro_id, num) VALUES("+subId+","+proId+",78.9)");

理想的には、ハードコードされた78.9の代わりに変数を使用します

そのような

        BigDecimal obj = new BigDecimal(78.9);
4

2 に答える 2

5

10進数(12、0)で0を使用すると、基本的に小数点以下は何もないはずなので、切り上げられるため、これは正常です。探しているものを取得するには、スケールを指定する必要があります。たとえば、decimal(12,5)では、小数点の左側に7つの数値、右側に5つの数値が許可されます。

DECIMAL列の宣言構文はDECIMAL(M、D)です。
MySQL5.1の引数の値の範囲は次のとおりです。

Mは最大桁数(精度)です。
範囲は1〜65です。(古いバージョンのMySQLでは1〜254の範囲が許可されていました。)

Dは小数点(目盛り)の右側の桁数です。
範囲は0〜30で、M以下である必要があります。

参照:http ://dev.mysql.com/doc/refman/5.1/en/precision-math-decimal-changes.html

于 2010-08-04T14:49:46.980 に答える
1

挿入する列のデータ型を次のように設定する必要があります

float(x,y)

また

decimal(x,y)

ここで、xは合計桁数、yは合計小数点以下の桁数です。

e.g. float(5,2)  -> 325.46
     decimal(10,5) -> 42579.12345
于 2010-08-04T14:39:24.013 に答える