Angular 9 formatCurrency 有一个严重的舍入问题

问题描述

我有一个 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 的第一个参数。

那为我修好了。