一般交易中保留的數字的小數位數為2位(即最小單位為 1分錢【0.01元】)
數據庫設計中預金錢有關或要求精准度要高的用 decimal(n,m) 表示,n表示保留的數字長度,保留的小數位數,如decimal(5,2) 對應的最大值 999.99
然而在mysql 中進行浮點數計算時,數據就需要進行截取保留
以下是一些保留小數位數的方法
mysql中:
方法一:truncate() 直接截取不四舍五入
select truncate(4545.1366,2);
運行結果:4545.13
方法二:FORMAT() 四舍五入,整數部分超過三位的時候以逗號分割,並且返回的結果是string類型的。
select FORMAT(4545.1366,2);
運行結果: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規定用作千位分隔符的字符串,
//注釋:如果設置了該參數,那么所有其他參數都是必需的。])
不四舍五入: