![](/img/trans.png)
[英]How to display one digit after having decimal point along with their units for numbers using angualrjs?
[英]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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.