2

当我将 78.9 插入 Mysql(使用 JDBC)时,它会被四舍五入到 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

这很正常,因为在小数点 (12, 0) 中使用 0 本质上表示小数点后应该没有任何内容,因此它会向上取整。您需要指定比例以获得所需的内容。例如,decimal(12,5) 将允许小数点左边有 7 个数字,右边有 5 个数字。

DECIMAL 列的声明语法是 DECIMAL(M,D)。
MySQL 5.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 回答