在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 關(guān)于js數(shù)字轉(zhuǎn)換字符串的一個問題

關(guān)于js數(shù)字轉(zhuǎn)換字符串的一個問題

比如:

var num  = 0.00;//如何在知道變量num含有小數(shù)點的情況下,轉(zhuǎn)換為字符串保留后2位,而不是通過Fixed(2)
                //強行保留2位小數(shù)。
                //嘗試過   num+""  ,也不行,返回一個number類型0

可能我的意思是,如果變量是0.0000,這樣的數(shù)字型的變量也可以自動轉(zhuǎn)換成"0.0000",這樣的話,就不能把Fixed()中的參數(shù)寫死,而且也不能根據(jù)字符串加".0000",其實核心問題就是把浮點數(shù)最后位全部為0000的保留下來為字符串。。。有點奇葩。。

如果想通過Fixed(num的長度),這種也是不行的,因為通過字符串話的num,已經(jīng)失去了小數(shù)位和小數(shù)的長度了,,,,,,

回答
編輯回答
亮瞎她

(Math.floor(2.33333*100)/100).toString() 這樣嗎?

2017年3月31日 13:19
編輯回答
撥弦

function d(alan)//小數(shù)位相關(guān)處理

    {
        var v = Number(alan);
        var r;
        if (alan <= 0)//0或者負數(shù)報錯
        {
            alert("輸入數(shù)值必須大于零");
        }
        else if (alan <= 0.9)//0.9以內(nèi)的純小數(shù),保留一位有效數(shù)字
        {
            var i = 0;
                while (alan <= 0.9)
                {
                    alan=alan*10;
                    i++;
                }
            r = v.toFixed(i);
        }
        else if (alan-Math.round(alan) == 0)//沒有小數(shù)位,返回整數(shù)數(shù)值
        {
            r = alan;
        }
        else if (Math.abs(alan-Math.round(alan))<0.1)//小數(shù)位可以忽略,返回舍入后的整數(shù)值
        {
            r = Math.round(alan);
        }
        else if (Math.abs(alan-Math.round(alan))>=0.1)//小數(shù)位不可忽略,保留一位小數(shù)
        {
            r = v.toFixed(1);
        }
        return r;
    }

這是我給自己做的計算工具中關(guān)于數(shù)字處理用的函數(shù),和你不一樣,沒有轉(zhuǎn)換為字符串,也只保留一位小數(shù),但大體性質(zhì)是類似的,供參考吧。
倒數(shù)第二個的意義是處理1.99舍入后變成2.00這樣會產(chǎn)生多余小數(shù)位的情況,所以干脆獨立做了一個條件篩選。

2018年8月12日 15:13
編輯回答
離觴

num.toFixed(2).toString()

2018年1月13日 17:15
編輯回答
互擼娃

Number(Number(num).toFixed(2))

2017年11月7日 07:34
編輯回答
遲月

你的意思是當有小數(shù)點的時候保留2位,沒有的時候就不要顯示有小數(shù)點?如果是這樣的話可以試試這個:

var a = 9;
var b = 9.258;

function demo(num) {
    var reg = /\./g; //查看是否存在小數(shù)點
    if(reg.test(num)) { //若存在,則保留兩位小數(shù),倒是不用考慮是否用toFixed,因為這個挺好用的
        return num.toFixed(2);
    } else {//不存在,返回原值
        return num;
    }
}
console.log(demo(a)); //9
console.log(demo(b)); //9.26
2017年7月15日 21:59
編輯回答
不討囍

建議給個示例,不然題干描述有點模糊。
我現(xiàn)在理解類似于補0操作,即不管小數(shù)點后面是0還是非0,都保留兩位并轉(zhuǎn)換為string.
那這就是一個toFixed(2),幾乎一模一樣。
那么,只能再實現(xiàn)一次toFixed(),這不算是重新【發(fā)明】輪子,這是純粹地重新【制造】輪子。
既然是重造,那么就必須在原有輪子上作改進,否則沒有任何意義。
于是,就有了:參考鏈接
代碼如下:

<html>
    <head>
        <script type="text/javascript">
            Number.prototype.toFixed=function (d) { 
                var s=this+""; 
                if(!d)d=0; 
                if(s.indexOf(".")==-1)s+="."; 
                s+=new Array(d+1).join("0"); 
                if(new RegExp("^(-|\\+)?(\\d+(\\.\\d{0,"+(d+1)+"})?)\\d*$").test(s)){
                    var s="0"+RegExp.$2,pm=RegExp.$1,a=RegExp.$3.length,b=true;
                    if(a==d+2){
                        a=s.match(/\d/g); 
                        if(parseInt(a[a.length-1])>4){
                            for(var i=a.length-2;i>=0;i--){
                                a[i]=parseInt(a[i])+1;
                                if(a[i]==10){
                                    a[i]=0;
                                    b=i!=1;
                                }else break;
                            }
                        }
                        s=a.join("").replace(new RegExp("(\\d+)(\\d{"+d+"})\\d$"),"$1.$2");
 
                    }if(b)s=s.substr(1); 
                    return (pm+s).replace(/\.$/,"");
                }return this+"";
 
            };
        </script>
    </head>
    <body>
        <input type="button" value="顯示0.009.toFixed(2)" onclick="alert(0.009.toFixed(2))"><br />
        <input type="button" value="顯示0.123.toFixed(2)" onclick="alert(0.123.toFixed(2))"><br />
        <input type="button" value="顯示0.125.toFixed(2)" onclick="alert(0.125.toFixed(2))"><br />
        <input type="button" value="顯示0.126.toFixed(2)" onclick="alert(0.126.toFixed(2))"><br />
        <input type="button" value="顯示20.445.toFixed(2)" onclick="alert(20.445.toFixed(2))"><br />
        <input onclick="alert(20.405.toFixed(2))" type="button" value="顯示20.405.toFixed(2)"> <br />
        <input onclick="alert(20.415.toFixed(2))" type="button" value="顯示20.415.toFixed(2)"> <br />
        <input onclick="alert(20.425.toFixed(2))" type="button" value="顯示20.425.toFixed(2)"> <br />
        <input onclick="alert(20.435.toFixed(2))" type="button" value="顯示20.435.toFixed(2)"> <br />
        <input onclick="alert(20.445.toFixed(2))" type="button" value="顯示20.445.toFixed(2)"> <br />
        <input onclick="alert(20.455.toFixed(2))" type="button" value="顯示20.455.toFixed(2)"> <br />
        <input onclick="alert(20.465.toFixed(2))" type="button" value="顯示20.465.toFixed(2)"> <br />
        <input onclick="alert(20.475.toFixed(2))" type="button" value="顯示20.475.toFixed(2)"> <br />
        <input onclick="alert(20.485.toFixed(2))" type="button" value="顯示20.485.toFixed(2)"> <br />
        <input onclick="alert(20.495.toFixed(2))" type="button" value="顯示20.495.toFixed(2)"> <br />
        <input onclick="alert(0.05.toFixed(1))" type="button" value="顯示0.05.toFixed(1)"> <br />
        <input onclick="alert(0.15.toFixed(1))" type="button" value="顯示0.15.toFixed(1)"> <br />
        <input onclick="alert(0.25.toFixed(1))" type="button" value="顯示0.25.toFixed(1)"> <br />
        <input onclick="alert(0.35.toFixed(1))" type="button" value="顯示0.35.toFixed(1)"> <br />
        <input onclick="alert(0.45.toFixed(1))" type="button" value="顯示0.45.toFixed(1)"> <br />
        <input onclick="alert(0.55.toFixed(1))" type="button" value="顯示0.55.toFixed(1)"> <br />
        <input onclick="alert(0.65.toFixed(1))" type="button" value="顯示0.65.toFixed(1)"> <br />
        <input onclick="alert(0.75.toFixed(1))" type="button" value="顯示0.75.toFixed(1)"> <br />
        <input onclick="alert(0.85.toFixed(1))" type="button" value="顯示0.85.toFixed(1)"> <br />
        <input onclick="alert(0.95.toFixed(1))" type="button" value="顯示0.95.toFixed(1)"> <br />
    </body>
</html>

以上是方案一。
方案二就是先將浮點數(shù)轉(zhuǎn)換為整型進行精度處理,然后對整形進行處理,處理完畢后進行字符串操作。

2018年7月16日 19:10
編輯回答
晚風眠
function demo (num) {    
    num = (num.toString()).match(/(\d+\.\d{0,2})|(\d+)/)[0];    
    if(!/\./.test(num)) {
        num = num + '.00';
    }else if(/\.\d{1}$/.test(num)){
        num = num + '0';
    }    
    return num;
}

console.log(demo(6))      //6.00
console.log(demo(6.0))    //6.00
console.log(demo(6.1))    //6.10
console.log(demo(6.21))   //6.21
console.log(demo(6.333))  //6.33
console.log(demo(0))      //0.00
console.log(demo(0.1))    //0.10
console.log(demo(0.01))   //0.01
console.log(demo(0.001))  //0.00
2017年8月11日 19:53
編輯回答
怣痛
var a = 0.00
undefined
a
0
var b = 1.00
undefined
b
1

直接在Google瀏覽器控制臺做的測試,結(jié)果就是這樣,在存儲的時候就已經(jīng)把小數(shù)點后的0抹去了
所以我覺得你想在轉(zhuǎn)化成字符串后仍保留兩位小數(shù)的話,只能手動添加,比如toString之后再+'.00'

2017年7月13日 15:12