zoukankan      html  css  js  c++  java
  • 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));
    缺陷是这里的值被转成了字符串。
  • 相关阅读:
    Java 8 Lambda 表达式
    OSGi 系列(十二)之 Http Service
    OSGi 系列(十三)之 Configuration Admin Service
    OSGi 系列(十四)之 Event Admin Service
    OSGi 系列(十六)之 JDBC Service
    OSGi 系列(十)之 Blueprint
    OSGi 系列(七)之服务的监听、跟踪、声明等
    OSGi 系列(六)之服务的使用
    OSGi 系列(三)之 bundle 事件监听
    OSGi 系列(三)之 bundle 详解
  • 原文地址:https://www.cnblogs.com/assasion/p/7828482.html
Copyright © 2011-2022 走看看