suchen

Heim  >  Fragen und Antworten  >  Hauptteil

MySQL-Gleitkomma-Präzisionsbereich und Rundung

黄舟黄舟2787 Tage vor914

Antworte allen(3)Ich werde antworten

  • 迷茫

    迷茫2017-05-18 10:53:23

    因为,你在创建表的时候,指定的 f3 是 float(6,2) ,那这个 6 和 2 是什么意思?
    6 是数字总位数。2是小数点后只保留2位。所以会显示成 9999.99 即总共 6 个9,小数后是 2 位

    Antwort
    0
  • PHPz

    PHPz2017-05-18 10:53:23

    建议使用decimal,尤其是涉及到钱的问题的时候,在mysql中float、double(或real)是浮点数,decimal(或numberic)是定点数。

    浮点数相对于定点数的优点是在长度一定的情况下,浮点数能够表示更大的数据范围;它的缺点是会引起精度问题。

    在今后关于浮点数和定点数的应用中,大家要记住以下几点:

    1、浮点数存在误差问题;

    2、对货币等对精度敏感的数据,应该用定点数表示或存储;

    3、编程中,如果用到浮点数,要特别注意误差问题,并尽量避免做浮点数比较;

    4、要注意浮点数中一些特殊值的处理。
    可以看看这个http://blog.csdn.net/lingmao5...

    Antwort
    0
  • 高洛峰

    高洛峰2017-05-18 10:53:23

    float(m,d) 中,m 代表总位数, d 代表小数点右边的位数

    create table example3 (
        f1 float,
        f2 float(5,2),
        d1 double,
        d2 double(5,2)
    );
    
    insert into example3(f1, f2, d1, d2)
                values(3.141592657,3.141592657,3.141592657,3.141592657),
                      (3,3,3,3);

    显示如下:

    f1 f2 d1 d2
    3.14159 3.14 3.141592657 3.14
    3 3.00 3 3.00

    解释:

    • 不指定 m,d :按照 float 与 double 的范围来取值

    • 指定 m,d : 按照 m,d 的值来取,超过则四舍五入,不超过则补 0

    Antwort
    0
  • StornierenAntwort