【问题标题】:numeric columns ignore decimal values in mariadb?数字列忽略mariadb中的十进制值?
【发布时间】:2016-06-05 11:25:14
【问题描述】:

在 mariadb 或其他可能的情况下,数字类型列中的十进制值不包括在计算中。例如,

MariaDB [mydb]> create table test (a decimal(5,0),b double(5,0));
MariaDB [mydb]> insert into test values (1.5,1.5);
MariaDB [mydb]> insert into test values (1.5,1.5);
MariaDB [mydb]> select format(sum(a),3) from test;
+------------------+
| format(sum(a),3) |
+------------------+
| 4.000            |
+------------------+
MariaDB [mydb]> select sum(b) from test;
+--------+
| sum(b) |
+--------+
|      2 |
+--------+

他们为什么不返回我想要的“3”? 为什么他们的回报不一样?

【问题讨论】:

    标签: sum mariadb numeric


    【解决方案1】:

    (m,0) 表示 存储 0 小数位。所以,1.5 向上(或向下?)四舍五入为2(或1?)。

    SUM() 函数适用于存储的内容,并且对原始1.5 一无所知。

    DECIMAL(5.0) 说小数点左边只保留 5 位,右边没有。

    DOUBLE(5.0) 说的更糟;不要使用它。使用普通的DOUBLE

    【讨论】:

    • 例如,在 excel 中,虽然显示了 3 个小数,但仍会存储尽可能多的小数,并且每个计算函数都会考虑所有这些小数。如果我想计算非常精确的结果,包括尽可能多的小数,我该如何处理 mariadb?
    • 使用DOUBLE 没有 (m,n) 限定符。关键是DOUBLE(5,0) 说要截断 before 存储。
    • 感谢您的帮助,这就是我想要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    相关资源
    最近更新 更多