什么是Angular 2中的Number Pipe参数?

216

我在下面使用了数字管道来将数字限制为两位小数。

{{ exampleNumber | number : '1.2-2' }}

我在想“1.2-2”的逻辑是什么?我已经尝试过使用这些内容,试图实现一个筛选零小数位的管道,但一无所获。


2
https://angular.io/docs/ts/latest/api/common/index/DecimalPipe-class.html - Günter Zöchbauer
4
https://angular.io/docs/ts/latest/api/common/index/DecimalPipe-pipe.html - phil294
https://alligator.io/angular/built-in-pipes-angular/ - napstercake
2
这仅适用于Angular 2。 - Lord Darth Vader
5个回答

389

45
很不幸,这也会四舍五入数字,更糟的是,在文档中没有任何关于此的说明。 - phil294
2
@Blauhirn 我也有同样的问题,是否有简单的解决方法或者我应该自己创建一个管道? - S. Robijns
9
@phil294 我知道你的留言已经有一段时间了,但是现在有一个关于四舍五入数字的描述。https://angular.io/api/common/DecimalPipe - Cristiano Bombazar
如果minFractionDigits大于0,则会出现错误。管道“DecimalPipe”的小数点后的最小位数(2)高于最大位数(0)。 - cnsnaveen

22
  1. 关于您的第一个问题,这个管道的工作方式如下:

    numberValue | number: {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}

    • minIntegerDigits:在小数点前要显示的最少整数位数,默认设置为1
    • minFractionDigits:小数点后要显示的最少数字位数

    • maxFractionDigits:小数点后要显示的最多数字位数

2.关于您的第二个问题,将小数部分过滤为零,如下所示:

{{ numberValue | number: '1.0-0' }}

如需进一步阅读,请查看以下博客


10

来自DOCS

将数字格式化为文本。组大小、分隔符和其他与语言环境有关的配置基于活动语言环境。

语法:

number_expression | number[:digitInfo[:locale]]

其中,expression是一个数字:

digitInfo是具有以下格式的字符串:

{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}
  • minIntegerDigits 是使用的最小整数位数,默认为1
  • minFractionDigits 是小数点后要显示的最小数字。默认为0。maxFractionDigits 是小数点后要显示的最大数字。默认为3。
  • locale 是定义要使用的语言环境的字符串(默认使用当前 LOCALE_ID)

演示


5

'0.0-0'会将数字格式化为千位分隔符形式

例如:100000.2 -> 100,000

非常酷!


2
'

'1.0-0'将为您提供零位小数,即没有小数点。例如:$500


我正在尝试将数字格式化为114,例如114.5,但是当我使用“1.0-0”时,它显示为“115”,有人知道为什么吗? - Karaja
1
这是因为Angular四舍五入该值并将114.5转换为115。 - alchi baucha
2
为什么会有踩?这个方法可以筛选到小数点后零位,并且回答了如何实现的问题。感谢 @alchibaucha 精确地解决了我的问题。 - S..

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接