給你寫個(gè)js函數(shù)直接調(diào)用可以格式化數(shù)字的【以下是代碼部分】script

創(chuàng)新互聯(lián)是專業(yè)的尼金平網(wǎng)站建設(shè)公司,尼金平接單;提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行尼金平網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
/**
* 格式化數(shù)字顯示方式
* 用法
* formatNumber(12345.999,'#,##0.00');
* formatNumber(12345.999,'#,##0.##');
* formatNumber(123,'000000');
* @param num
* @param pattern
*/
function formatNumber(num,pattern){
var strarr = num?num.toString().split('.'):['0'];
var fmtarr = pattern?pattern.split('.'):[''];
var retstr='';
// 整數(shù)部分
var str = strarr[0];
var fmt = fmtarr[0];
var i = str.length-1;
var comma = false;
for(var f=fmt.length-1;f=0;f--){
switch(fmt.substr(f,1)){
case '#':
if(i=0 ) retstr = str.substr(i--,1) + retstr;
break;
case '0':
if(i=0) retstr = str.substr(i--,1) + retstr;
else retstr = '0' + retstr;
break;
case ',':
comma = true;
retstr=','+retstr;
break;
}
}
if(i=0){
if(comma){
var l = str.length;
for(;i=0;i--){
retstr = str.substr(i,1) + retstr;
if(i0 ((l-i)%3)==0) retstr = ',' + retstr;
}
}
else retstr = str.substr(0,i+1) + retstr;
}
retstr = retstr+'.';
// 處理小數(shù)部分
str=strarr.length1?strarr[1]:'';
fmt=fmtarr.length1?fmtarr[1]:'';
i=0;
for(var f=0;ffmt.length;f++){
switch(fmt.substr(f,1)){
case '#':
if(istr.length) retstr+=str.substr(i++,1);
break;
case '0':
if(istr.length) retstr+= str.substr(i++,1);
else retstr+='0';
break;
}
}
return retstr.replace(/^,+/,'').replace(/\.$/,'');
}
alert(formatNumber(12345.999,'#,##0.00'));
/script
javascript有一個(gè)很有用的函數(shù)eval("string")
這個(gè)函數(shù)可以把字符串轉(zhuǎn)換為對(duì)象或者可以執(zhí)行的語句,例如你的代碼可以用
obj2=eval("document.a.c"+i),另外你還可以這樣寫eval("alert()"),
eval("a+=2"),這樣你就可以讓用戶輸入的javascript語句執(zhí)行
你的docheck()如此改即可:
function docheck(){
obj1=eval("document.a.a"+i)
obj2=eval("document.a.c"+i)
obj1.value=obj2.options[obj2.selectedIndex].value;
}
javascript中判斷變量是否為數(shù)字類型的方法有兩種:
方法一:
function IsNum(s)
{
if(s!=null){
var r,re;
re = /\d*/i; //\d表示數(shù)字,*表示匹配多個(gè)數(shù)字
r = s.match(re);
return (r==s)?true:false;
}
return false;
}
方法二:
function IsNum(s)
{
if (s!=null s!="")
{
return !isNaN(s);
}
return false;
}
兩種方法都可以檢查參數(shù)是否為數(shù)字。
第一種使用正則表達(dá)式檢查,對(duì)于檢查的內(nèi)容更加靈活,但顯得麻煩;
第二種方法,直接調(diào)用系統(tǒng)的isNaN() ,對(duì)所有數(shù)字均有效,簡單快捷。
數(shù)字因?yàn)閖s只有number這一種類型,包含整數(shù)和浮點(diǎn)數(shù)。
運(yùn)算符有算術(shù)運(yùn)算符、操作運(yùn)算符、比較運(yùn)算符、和邏輯運(yùn)算符。
我最近再用的一個(gè)很好用的application, 叫實(shí)驗(yàn)樓,里面做了很詳細(xì)明了的歸類,故搬運(yùn)過來。
①算數(shù)運(yùn)算符
②操作運(yùn)算符
③比較運(yùn)算符
④邏輯運(yùn)算符
⑤運(yùn)算符的優(yōu)先級(jí)
之前記錄過JavaScript中判斷為數(shù)字類型的多種方式,這篇看看如何判斷為整數(shù)類型(Integer)。
JavaScript中不區(qū)分整數(shù)和浮點(diǎn)數(shù),所有數(shù)字內(nèi)部都采用64位浮點(diǎn)格式表示,和Java的double類型一樣。但實(shí)際操作中比如數(shù)組索引、位操作則是基于32位整數(shù)。
取整的方法可以按照下面的五種來進(jìn)行。
方式一、使用取余運(yùn)算符判斷
任何整數(shù)都會(huì)被1整除,即余數(shù)是0。利用這個(gè)規(guī)則來判斷是否是整數(shù)。
function isInteger(obj) {
return obj%1 === 0
}
isInteger(3) // true
isInteger(3.3) // false
以上輸出可以看出這個(gè)函數(shù)挺好用,但對(duì)于字符串和某些特殊值顯得力不從心
isInteger('') // true
isInteger('3') // true
isInteger(true) // true
isInteger([]) // true
對(duì)于空字符串、字符串類型數(shù)字、布爾true、空數(shù)組都返回了true,真是難以接受。對(duì)這些類型的內(nèi)部轉(zhuǎn)換細(xì)節(jié)感興趣的請(qǐng)參考:JavaScript中奇葩的假值
因此,需要先判斷下對(duì)象是否是數(shù)字,比如加一個(gè)typeof
function isInteger(obj) {
return typeof obj === 'number' obj%1 === 0
}
isInteger('') // false
isInteger('3') // false
isInteger(true) // false
isInteger([]) // false
二、使用Math.round、Math.ceil、Math.floor判斷
整數(shù)取整后還是等于自己。利用這個(gè)特性來判斷是否是整數(shù),Math.floor示例,如下
function isInteger(obj) {
return Math.floor(obj) === obj
}
isInteger(3) // true
isInteger(3.3) // false
isInteger('') // false
isInteger('3') // false
isInteger(true) // false
isInteger([]) // false
這個(gè)直接把字符串,true,[]屏蔽了,代碼量比上一個(gè)函數(shù)還少。
三、通過parseInt判斷
function isInteger(obj) {
return parseInt(obj, 10) === obj
}
isInteger(3) // true
isInteger(3.3) // false
isInteger('') // false
isInteger('3') // false
isInteger(true) // false
isInteger([]) // false
但也有一個(gè)缺點(diǎn)
isInteger(1000000000000000000000) // false
原因是parseInt在解析整數(shù)之前強(qiáng)迫將第一個(gè)參數(shù)解析成字符串。
四、通過位運(yùn)算判斷
function isInteger(obj) {
return (obj | 0) === obj
}
isInteger(3) // true
isInteger(3.3) // false
isInteger('') // false
isInteger('3') // false
isInteger(true) // false
isInteger([]) // false
這個(gè)函數(shù)位運(yùn)算只能處理32位以內(nèi)的數(shù)字,對(duì)于超過32位的無能為力,如
isInteger(Math.pow(2, 32)) // 32位以上的數(shù)字返回false了
五、ES6提供了Number.isInteger
Number.isInteger(3) // true
Number.isInteger(3.1) // false
Number.isInteger('') // false
Number.isInteger('3') // false
Number.isInteger(true) // false
Number.isInteger([]) // false
首先我們看看最簡單的實(shí)現(xiàn)方法,需要達(dá)到這樣的目的。
輸入一串?dāng)?shù)字或者字符串,最后返回格式化后的字符串,每隔3位用逗號(hào)分隔,通過四舍五入保留小數(shù)點(diǎn)后2兩位。
我們來分析下方法的實(shí)現(xiàn)過程。
替換掉原本傳入數(shù)據(jù)中可能出現(xiàn)的'$'和',',然后判斷是否為數(shù)字。
判斷傳入的數(shù)字是正數(shù)還是負(fù)數(shù)。
判斷小數(shù)位數(shù)的舍入性。
每隔三位,添加一個(gè)逗號(hào)。
重新拼接字符串,正負(fù)號(hào)+整數(shù)位+小數(shù)點(diǎn)+小數(shù)位
新聞標(biāo)題:javascript數(shù)七的簡單介紹
標(biāo)題URL:http://chinadenli.net/article17/dsgeggj.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、網(wǎng)站收錄、服務(wù)器托管、ChatGPT、網(wǎng)站導(dǎo)航、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)