有時候在做數據處理的時候,在前台頁面上顯示的數字需要保留小數點的后兩位,不足兩位的用0代替,這個時候就需要對數據做一些處理了。如果只用round(value,2)(四舍五入)和trunc(value,2)(不四舍五入)這兩個函數中的任意一個的話,會有些許缺陷。就是在尾數為0的時候,這個0會被省略掉。比如round(1/2,2) ,結果是0.5,而不是想要的0.50,這個時候就要想其它辦法了。
一、在sql中做處理
①、CAST (expression AS data_type)
參數說明:
expression:任何有效的SQServer表達式。
AS:用於分隔兩個參數,在AS之前的是要處理的數據,在AS之后是要轉換的數據類型。
data_type:目標系統所提供的數據類型,包括bigint和sql_variant,不能使用用戶定義的數據類型。
所以可以用cast(value as number(10,2))來轉換,這個是我最喜歡用的一種方式,因為代碼量少,嘻嘻。如果通過CAST()函數將這個值轉換為number類型,需要首先定義number值的精度與小數位數。這里的精度與小數位數分別為10 與2,精度是總的數字位數,包括小數點左邊和右邊位數的總和。而小數位數是小數點右邊的位數。這表示本例能夠支持的最大的整數值是9999999,而最小的小數是0.01。
二、在Java代碼中做處理
打印的結果為
三、在前端js處理
①、value.toFixed(2);函數
這個方法還是不能達到強制保留兩位小數的效果,比如4.503.toFixed(2)的結果為4.5而不是想要的4.50。
②、自己寫一個方法
function
returnFloat(value){
var
value=Math.round(parseFloat(value)*100)/100;
var
xsd=value.toString().split(
"."
);
if
(xsd.length==1){
value=value.toString()+
".00"
;
return
value;
}
if
(xsd.length>1){
if
(xsd[1].length<2){
value=value.toString()+
"0"
;
}
return
value;
}
}
var
num=3.1;
console.log(returnFloat(num));