博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js中的数据转换、整数、小数保存、四舍五入
阅读量:5103 次
发布时间:2019-06-13

本文共 4686 字,大约阅读时间需要 15 分钟。

 首先,示例jsp中的整数录入、保存
     <input class="form-control" id="unit" name="unit" placeholder="份数"
        type="text"
        οnkeypress="if(!this.value.match(/^[\+\-]?\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+)?$/))this.o_value=this.value"
        οnkeyup="if(!this.value.match(/^[\+\-]?\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+)?$/))this.o_value=this.value"
        οnblur="if(isNaN(value))this.value='';else this.value=value.replace(/\b(0+)/gi,'')"/>
 
其次,示例:jsp中保存四位小数(做到四舍五入)
<input class="form-control" id="firstPrem" name="firstPrem" placeholder="首期总保费"      data-rule-required='true' type="text"  value="${tblOrder.firstPrem }"    
  οnkeypress="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value"   
   οnkeyup="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value"
//方案一:如果不考虑数据长度,还可以用(整数超过11位就不行了,此时小数只有第一位有值)
  οnblur="if(isNaN(value))this.value='';else if(this.value!=''){if((Math.floor((parseFloat(value).toFixed(4))*10000)-(Math.floor(value*10000))==0) && (Math.round((value*100000)%10)==5)) value=Math.floor(value*10000+1)/10000; else value=parseFloat(value).toFixed(4);}
//方案二:无视有限数据长度,转为字符串进行分类归纳
οnblur="if(isNaN(value))this.value='';
      else if(this.value!=''){
       if(this.value.indexOf('.')==-1)value=value+'.00000';
       var str_before = value.split('.')[0];
       if(str_before=='')str_before=0;
       str_before = Math.round(str_before);
       var str_after = value.split('.')[1]+'00000';
       if(str_after=='')str_after='00000';
       str2 = str_after.charAt(4);
       if(str2>4 && str_after.slice(0,4)<9999)
       this.value=(str_before+'.'+(Math.round(str_after.slice(0,4))+1));
       if(str2>4 && str_after.slice(0,4)==9999)
       this.value=((Math.round(str_before)+1)+'.0000');
       if(str2<5)
       this.value=(str_before+'.'+str_after.slice(0,4));
       if(this.value.split('.')[0].length>11){
       layer.msg('长度超过数据存储上限!');
       this.value='';
       }
      } "
 
οnblur="if(isNaN(value))this.value='';       else if(this.value!='' &&  value.split('.')[0].length>11){        layer.msg('长度超过数据存储上限!');        this.value='';       }       else if(this.value!=''){        var str_before = value.split('.')[0];        if(str_before=='')str_before=0;        var str_after = value.split('.')[1]+'00000';        if(str_after=='')str_after='00000';        str2 = str_after.charAt(4);        if(str2>4 && str_after.slice(0,4)<9999)        this.value=(str_before+'.'+(Math.round(str_after.slice(0,4))+1));        if(str2>4 && str_after.slice(0,4)==9999)        this.value=((Math.round(str_before)+1)+'.0000');        if(str2<5)        this.value=(str_before+'.'+str_after.slice(0,4));       } "      />

1)数据进来,首先确保是数字,如果因为输入法等原因进来的不是数字,则需要通过 onblur进行校验,如果不是数字,清空 2)toFixed是个好方法,可以进行数据的小数位数控制,但并不是单纯的截取(toFixed之后的数据减去一个同长度的值就可以看的出来) 3)toFixed对于尾数是5的处理无法精准处理,需要特殊加工,进行场景分类归纳处理

js中的数据类型及其转换

Js中的数据类型

Js中的数据类型一共有六种,即number,string,boolean,underfine,null,object

一,number

Number数据类型指的是数字,可以为整型,也可以是浮点数。如

var a=12,b=12.5;

 

 

二,string

字符串由零个或多个字符构成,字符包括字母,数字,标点符号和空格;需要注意的是

字符串必须放在引号里(单引号或双引号);

 
 

var bob=”man”;

 

alert(“bob”);

 

alert(bob);

浏览器首先会弹出包含有bob”的字符串,然后弹出包含有“man”的字符串,前者是直接弹出字符串,后者则是弹出变量的值。

三,boolean

布尔型数据只能有两种值 true false,在jstruefalse是关键字。通常,我们设置布尔值时多用于条件的判断。如:

 
 

var flag=true;

 

if(flag){

 

//js 代码

 

}

在条件判断语句中我们将所有的判断条件看做一个布尔值(这里需要了解一些布尔值的转换特性)。

四,underfine

underfine通常指的是没有赋值的变量,通过typeof可以对数据的类型进行判断。如

 
 

var a,b=underfine;

 

alert(a);

 

alert(typeof a);

两次结果都为underfine

五,null

null是一个只有一个值的特殊类型。表示一个空对象引用。如:

var a=null;

a清空。

六,object

对象就是由一些彼此相关的属性和方法集合在一起而构成的一个数据实体。常见的对象有arraywindowdocument等。

例:

 
 

var today = new Date();

 

var year = today.getFullYear();

 

var month = today.getMonth() + 1;

 

var day = today.getDay();

 通过创建对象实例就可以调用对象的方法了,如上就是创建了一个Date的对象实例todaytoday通过调用Date的方法得出了现在的年月日等信息。

数组array是作为经常使用的对象,是由多个 (-) 所组成的一个多容器。其索引 默认是从0开始的。创建数组有两种方法:1创建数组对象实例 var arr=newArray1,2,3);2直接使用面向字面量 var a=[1,2,3];

 
 

<script  type="text/javascript">

 

        var date=new Date();

 

        var day=date.getDay();

 

        var weekly=["星期天","星期一","星期二","星期三","星期四","星期五","星期六"]

 

        document.write("today  is "+weekly[day]+"<br>");

 

</script>

结果将输出今天是礼拜几。

数据类型的查看与转换

js中我们经常需要知道某些变量的数据类型,并将其转换为我们所需要的数据类型。

通常,我们判断变量的数据类型会用到标识符typeof,如:

 
 

var mood = "happy";

 

alert(typeof  mood);

 

alert(typeof  95)

 

通过标识符,我们可以很快获取数据的类型;

数据的转换中,我们经常用到的是将变量转换成字符串或数字。

转换成字符串要使用toString(),例

 
 

var married = false;

 

alert(married.toString());

  

 

转换成数字时,有两种方法,parseInt() 转换成整数,parseFloat()转换成浮点数。

例:

   
 

 

var test = parseInt(“blue”); //returns NaN

 

var test = parseInt(“1234blue”); //returns  1234

 

var test = parseInt(“22.5”); //returns 22

 

var test = parseFloat(“1234blue”); //returns  1234

 

var test = parseFloat(“22.5”); //returns 22.5

 

转载于:https://www.cnblogs.com/hanwuxing/p/8037617.html

你可能感兴趣的文章
CLR 关于强命名程序集 .
查看>>
[BZOJ 3489] A simple rmq problem 【可持久化树套树】
查看>>
如何制作并更改项目icon文件
查看>>
设计模式:迭代器模式(Iterator)
查看>>
cmd批处理常用符号详解
查看>>
关于给构造函数传达参数方法
查看>>
mysql忘记密码时如何修改root用户密码
查看>>
STM32单片机使用注意事项
查看>>
在linux中出现there are stopped jobs 的解决方法
查看>>
获取浏览器版本信息
查看>>
SQLServer之删除视图
查看>>
js forEach跳出循环
查看>>
MyBatis---动态SQL
查看>>
快速创建一个 spring mvc 示例
查看>>
swing入门教程
查看>>
好莱坞十大导演排名及其代表作,你看过多少?
查看>>
JVM-class文件完全解析-类索引,父类索引和索引集合
查看>>
Loj #139
查看>>
StringBuffer是字符串缓冲区
查看>>
hihocoder1187 Divisors
查看>>