2


0

(JDBCを使用して)Mysqlに78.9を挿入すると、79に切り上げられますか? これは普通ですか

(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);

2 Answer


5


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

The declaration syntax for a DECIMAL column is DECIMAL(M,D).
The ranges of values for the arguments in MySQL 5.1 are as follows:

M is the maximum number of digits (the precision).
It has a range of 1 to 65. (Older versions of MySQL permitted a range of 1 to 254.)

D is the number of digits to the right of the decimal point (the scale).
It has a range of 0 to 30 and must be no larger than M.

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


1


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

float(x,y)

or

decimal(x,y)

ここで、xは総桁数、yは小数の総数です。

e.g. float(5,2)  -> 325.46
     decimal(10,5) -> 42579.12345