mysql 和php 保留2位小數

 

通常交易中保留的數字的小數位數爲2位(即最小單位爲 1分錢【0.01元】)mysql

數據庫設計中預金錢有關或要求精準度要高的用 decimal(n,m) 表示,n表示保留的數字長度,保留的小數位數,如decimal(5,2) 對應的最大值 999.99sql

 然而在mysql 中進行浮點數計算時,數據就須要進行截取保留數據庫

如下是一些保留小數位數的方法數據庫設計

mysql中:函數

方法一:truncate() 直接截取不四捨五入spa

select truncate(4545.1366,2);設計

運行結果:4545.13code

 

方法二:FORMAT() 四捨五入,整數部分超過三位的時候以逗號分割,而且返回的結果是string類型的。orm

select FORMAT(4545.1366,2);ci

運行結果:4,545.14

 

方法三:四捨五入 ,適合金錢保留計算

select convert(4545.1366,decimal(6,2));

運行結果:4545.14

 

備註:

MySQL 的CAST()和CONVERT()函數可用來獲取一個類型的值,併產生另外一個類型的值。

CAST(value as type);

CONVERT(value, type);

能夠轉換的類型(type)是有限制的。這個類型能夠是如下值其中的一個:

  • 二進制,同帶binary前綴的效果 : BINARY    
  • 字符型,可帶參數 : CHAR()     
  • 日期 : DATE     
  • 時間: TIME     
  • 日期時間型 : DATETIME     
  • 浮點數 : DECIMAL      
  • 整數 : SIGNED     
  • 無符號整數 : UNSIGNED

 

PHP中:

四捨五入法:

    $num = 4545.1366;

 

        //第一種:利用round()對浮點數進行四捨五入

        var_dump(round($num,2)); //float 4545.14

        

        //第二種:利用sprintf格式化字符串

        $format_num = sprintf("%.2f",$num);

        var_dump($format_num); //string '4545.14'

        

        //第三種:利用千位分組來格式化數字的函數number_format()

        var_dump(number_format($num, 2)); //string '4,545.14'

        //或者以下

        var_dump(number_format($num, 2, '.', ''));// string '4,545.14'

        //number_format(float number, int [decimals], string [dec_point規定用做小數點的字符串], string [thousands_sep規定用做千位分隔符的字符串,

    //註釋:若是設置了該參數,那麼全部其餘參數都是必需的。])

 

不四捨五入:

  

    $format_num = sprintf("%.2f",substr(sprintf("%.3f", $num), 0, -1));
       var_dump($format_num); //string '4545.13'
     
取整
    ceil() 向上取整
    floor() 向下取整
相關文章
相關標籤/搜索