Angular format number pipe

Angular format number pipe

Angular pipe,用来自定义格式化页面中的数字,通过配置 最多小数位数 和 最少小数位数,截取小数位或者在小数位尾部补0
如:
3.133 -> 3.13
3.1 -> 3.10

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
name: 'formatNumberPipe',
})
export class FormatNumberPipe implements PipeTransform {
/**
* 数字字符 格式化; 默认最少 2 位小数,最多 4 位小数,可配置
* @description 数字字符 格式化
* @param value: 输入值
* @param minFractionDigits: 小数点后最小位数 默认 2
* @param maxFractionDigits: 小数点后最大位数 默认 4
*/
transform(value: string | number | undefined | null, minFractionDigits = 2, maxFractionDigits = 4): string {
let originValue = value;
if (!originValue && originValue !== 0) {
originValue = '';
return originValue;
}
if (typeof originValue === 'string' && isNaN(Number(originValue))) {
return originValue;
} else {
originValue = Number(originValue);
}

const isInteger = originValue % 1 === 0; // 是否是整数
// 整数
if (isInteger) {
return `${originValue.toFixed(minFractionDigits)}`;
} else {
// 浮点数
const fractionDigits = String(originValue).split('.')[1];
if (fractionDigits.length > maxFractionDigits) {
return originValue.toFixed(maxFractionDigits); // 按 最大 小数 位数 保留
}
if (fractionDigits.length < minFractionDigits) {
return originValue.toFixed(minFractionDigits); // 按 最小 小数 位数 保留
}
return `${value}`; // 返回原始值
}
}
}


Angular format number pipe
https://tedding.dev/2023/06/06/1888f9ead68.html
作者
TED.DING
发布于
2023年6月6日
许可协议