繁体   English   中英

限制小数点后的数字,一位数字加0

[英]Limit numbers after decimal, add 0 if one digit

我正在尝试制作一个文本字段,以便如果有一个数字 153.254,它就会变成 153.25。 如果该字段包含 154.2,则额外添加一个 0 以填充小数点后的两位; 154.20。

toFixed() 效果很好,但我不希望数字四舍五入。 还遇到了其他解决方案,如果我输入 1.40,那么如果我在 1 之后将光标移回,除非我清除该字段并重新开始,否则我无法输入任何内容。

有没有一种简单的jQuery方法来限制小数点后的两个字符,然后如果小数点后只有一个字符,则添加一个零来填充两个字符的限制? (该字段可能会从数据库接收值,这就是为什么需要第二部分的原因)

解决方案更新:对于那些感兴趣的人,我把它放在一起来实现我想要的(感谢下面的答案以及关于 stackoverflow 的其他问题)

           $('.number').each(function(){
                         this.value = parseFloat(this.value).toFixed(3).slice(0, -1);
                    });
           $('.number').keyup(function(){
                        if($(this).val().indexOf('.')!=-1){         
                            if($(this).val().split(".")[1].length > 2){                
                                if( isNaN( parseFloat( this.value ) ) ) return;
                                this.value = parseFloat(this.value).toFixed(3).slice(0, -1);

                            }  
                         }            
                         return this; //for chaining
                    });

你可以做myNumber.toFixed(3).slice(0, -1)

试试这个:

var num = 153.2

function wacky_round(number, places) {
    var h = number.toFixed(2);

    var r = number.toFixed(4) * 100;
    var r2 = Math.floor(r);
    var r3 = r2 / 100;
    var r4 = r3.toFixed(2);

    var hDiff = number - h;
    var r4Diff = number - r3;
    var obj = {};
    obj[hDiff] = h;
    obj[r4Diff] = r4;
    if (r4Diff < 0) {
        return h;
    }
    if (hDiff < 0) {
        return r4;
    }
    var ret = Math.min(hDiff, r4Diff);

    return obj[ret];
}

alert(wacky_round(num, 2))

怎么样

function doStuff(num){
    var n = Math.floor(num * 100) / 100,
        s = n.toString();

    // if it's one decimal place, add a trailing zero:
    return s.split('.')[1].length === 1 ? (s + '0') : n;
}

console.log(doStuff(1.1), doStuff(1.111)); // 1.10, 1.11

http://jsfiddle.net/NYnS8/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM