在<input>中始终显示小数点后两位的数字


71

我有一个ng-model的浮点值,我希望始终在其小数点后2位显示<input>

<input ng-model="myNumb" step ="0.01" type="number">

当“ myNumb”为小数时,此方法适用于大多数情况。但是,如果“ myNumb”的小数位数少于2个(3.2)或整数(30),
则不会强制显示小数点后2位。如何在<input>字段中强制显示小数点后2位


由于<input>具有type =“ number”,如果我执行toFixed(2),它将抛出错误。:(
WABBIT0111 '16

Answers:


78

AngularJS-输入带有小数点后两位的数字可能会有所帮助...筛选:

  1. 设置正则表达式以使用ng-pattern验证输入。在这里,我只接受最多2个小数位且带点分隔符的数字。
<input type="number" name="myDecimal" placeholder="Decimal" ng-model="myDecimal | number : 2" ng-pattern="/^[0-9]+(\.[0-9]{1,2})?$/" step="0.01" />

前瞻性地指出了下一个答案ng-model =“ myDecimal | number:2”


完成,很抱歉,我没有考虑这一点,因为我认为在上下文中进行操作会更好,但是再一次,您是对的。
DIEGO CARRASCAL '16

3
显示“ 1”而不是“ 1.00”
Rob Sedgwick

5
那不行 它检查输入的位数是否不超过2个小数,但不会更改显示的数字以显示2个小数(即使这些小数为0)
David V.

8
您能提供一个jsfiddle吗?正如@jcc在下面指出的那样,您不能在ng-model中使用过滤器。对我不起作用。
尤金·库拉布霍夫

1
在其他地方已经提到过了,但这是行不通的,因为input类型为numberaNumber的值应为a,但是角度number滤镜返回a String。建议做出这种input类型text实际上只是避开了问题。
c24w


45

如果您使用的是Angular 2(显然它也适用于Angular 4),则可以使用以下内容舍入到小数点后两位{{ exampleNumber | number : '1.2-2' }},例如:

<ion-input value="{{ exampleNumber | number : '1.2-2' }}"></ion-input>

分解

'1.2-2'表示{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}

  • 小数点前至少显示一位数字
  • 小数点后将显示至少2位数字
  • 但不超过2位数字

这里这里到期的信用


26

您是否尝试过使用过滤器

<input ng-model='val | number: 2'>

https://docs.angularjs.org/api/ng/filter/number


4
这实际上是行不通的,因为我正在使用<input type =“ number”>,这将引发错误。并且在这种情况下,我不能使用type =“ number”
WABBIT0111 2016年

15
您无法在Angular中做到这一点,ng-model仅接受可分配的表达式... docs.angularjs.org/error/ngModel/nonassign
jcc


3
在ng-model中,您不能使用过滤器,它显示了非分配错误
Siddharth Pandey

20

像这样简单地使用数字管道:

{{ numberValue | number : '.2-2'}}

上面的管道的工作方式如下:

  • 显示小数点前至少1个整数,默认设置
  • 小数点后显示不少于2个整数
  • 小数点后显示不超过2个整数

5

删除(@maudulus的答案)的另一个简写,{maxFractionDigits}因为它是可选的。

您可以使用 {{numberExample | number : '1.2'}}


3

将数字四舍五入到小数点的最佳方法是

a=parseFloat(Math.round(numbertobeRound*10^decimalplaces)/10^decimalplaces);

例如 ;

numbertobeRound=58.8965896589;

如果你要58.90

小数位是2

a=parseFloat(Math.round(58.8965896589*10^2)/10^2);

您好,欢迎来到StackOverflow!请查看您的答案并进行编辑。请看看如何写一个好的答案?
Clijsters

-2

使用带有空符号($)的货币过滤器

{{val | currency:''}}

3
这实际上是行不通的,因为我正在使用<input type =“ number”>,这将引发错误。并且在这种情况下,我不能使用type =“ number”
WABBIT0111 2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.