问题描述
我有一个 angular 9 应用程序,并且我编写了自己的货币管道。它看起来像这样:
import { Pipe,PipeTransform } from '@angular/core';
import { formatCurrency,getCurrencySymbol } from '@angular/common';
@Pipe({
name: 'dutchcurrency',})
export class DutchCurrencyPipe implements PipeTransform {
transform(
value: number,currencyCode: string = 'EUR',display:
| 'code'
| 'symbol'
| 'symbol-narrow'
| string
| boolean = 'symbol',digitsInfo: string = '3.2-2',locale: string = 'nl',): string | null {
return formatCurrency(
value,locale,getCurrencySymbol(currencyCode,'wide'),currencyCode,null,);
}
}
我在 formatCurrency 中发现了一个非常严重的缺陷。我有一个数字,即 1.425。 formatCurrency 将其格式化为 1.42,这是非常错误的。它应该四舍五入到 1.43!在 formatCurrency 中存在一个非常严重的缺陷,其中数字应该四舍五入一半而不是向下。这是已知错误吗?我该如何解决?
解决方法
我找到了答案。出于某种原因,发送到管道的值是一个字符串而不是一个数字,所以我解决了这个问题。其次,我用 Math.round((value + Number.EPSILON) * 100) / 100 更改了 formatCurrency 的第一个参数。
那为我修好了。