首页 > 解决方案 > 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 中似乎存在一个非常严重的缺陷,其中数字应该向上取整而不是向下取整。这是一个已知错误,我该如何解决?

标签: angularcurrency-formatting

解决方案


我找到了答案。由于某种原因,发送到管道的值是字符串而不是数字,所以我修复了它。其次,我用 Math.round((value + Number.EPSILON) * 100) / 100 更改了 formatCurrency 的第一个参数。

那为我修好了。


推荐阅读