搜尋

首頁  >  問答  >  主體

MySQL 浮點型的精度範圍與四捨五入

##

黄舟黄舟2829 天前949

全部回覆(3)我來回復

  • 迷茫

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

    因為,你在建立表格的時候,指定的 f3 是 float(6,2) ,那這個 6 和 2 是什麼意思?
    6 是數字總位數。 2是小數點後只保留2位。所以會顯示成 9999.99 即總共 6 個9,小數後是 2 位

    回覆
    0
  • PHPz

    PHPz2017-05-18 10:53:23

    建議使用decimal,尤其是涉及金錢的問題的時候,在mysql中float、double(或real)是浮點數,decimal(或numberic)是定點數。

    浮點數相對於定點數的優點是在長度一定的情況下,浮點數能夠表示更大的資料範圍;它的缺點是會造成精確度問題。

    在今後關於浮點數和定點數的應用中,大家要記住以下幾點:

    1、浮點數有誤差問題;

    2、對貨幣等對精度敏感的數據,應該用定點數表示或儲存;

    3、程式設計中,如果用到浮點數,要特別注意誤差問題,並儘量避免做浮點數比較;

    4、要注意浮點數中一些特殊值的處理。
    可以看看這篇http://blog.csdn.net/lingmao5...

    回覆
    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
    🎜

    回覆
    0
  • 取消回覆