Oracle保留小數點后兩位的幾種方法


有時候在做數據處理的時候,在前台頁面上顯示的數字需要保留小數點的后兩位,不足兩位的用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));
缺陷是這里的值被轉成了字符串。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM