Skip to content

formatPercent

描述

格式化百分位数值,将数字转换为百分比形式显示。支持正负号显示、乘以100处理等功能,当输入值无效时返回 '--'。结果保留2位小数,使用严格四舍五入算法。

语法

ts
formatPercent(value: any, showSign?: boolean, mul100?: boolean): string

参数

  • value (any): 需要格式化的数字,传入非法类型会返回 '--'
  • showSign (boolean, 可选): 正数时是否携带+号,默认携带,0时不加+号
  • mul100 (boolean, 可选): 数值是否需要先乘以100再进行处理,默认会先乘100

返回值

  • string: 格式化后的百分比字符串,保留2位小数

异常

  • 无异常抛出,无效输入返回 '--'
  • 支持的无效输入包括:null、undefined、空字符串、非数字字符串、NaN、Infinity

示例

基本用法

ts
import { formatPercent } from '@fu/matrix';

// 基本格式化(保留2位小数)
formatPercent(0.1234); // => '+12.34%'
formatPercent(-0.1234); // => '-12.34%'
formatPercent(0.5); // => '+50.00%'
formatPercent(1); // => '+100.00%'
formatPercent(0.123456); // => '+12.35%' (四舍五入)
formatPercent(0); // => '0.00%'

控制正号显示

ts
// 默认显示正号
formatPercent(0.1234); // => '+12.34%'

// 不显示正号
formatPercent(0.1234, false); // => '12.34%'

// 负数始终显示负号
formatPercent(-0.1234, false); // => '-12.34%'

// 0 时不加正号
formatPercent(0); // => '0.00%'
formatPercent(0, true); // => '0.00%'
formatPercent(0, false); // => '0.00%'

控制乘以100处理

ts
// 默认乘以100
formatPercent(0.1234); // => '+12.34%'

// 不乘以100(输入已经是百分比形式)
formatPercent(12.34, true, false); // => '+12.34%'
formatPercent(50, true, false); // => '+50.00%'

处理无效输入

ts
formatPercent(null); // => '--'
formatPercent(undefined); // => '--'
formatPercent(''); // => '--'
formatPercent('invalid'); // => '--'
formatPercent('abc123'); // => '--'
formatPercent('12.34.56'); // => '--' (无效数字格式)
formatPercent(NaN); // => '--'
formatPercent(Infinity); // => '--'

字符串输入

ts
formatPercent('0.1234'); // => '+12.34%'
formatPercent('-0.1234'); // => '-12.34%'
formatPercent('12.34', true, false); // => '+12.34%'

// 支持带 % 的字符串输入(会自动解析)
formatPercent('1.2345%'); // => '+1.23%'
formatPercent('-12.34%', true, false); // => '-12.34%'

// 无效字符串格式会被拒绝
formatPercent('invalid'); // => '--'
formatPercent('12.34.56'); // => '--'
formatPercent('abc123'); // => '--'

边界情况

ts
// 零值
formatPercent(0); // => '0.00%'
formatPercent(-0); // => '0.00%'

// 极小值
formatPercent(0.001); // => '+0.10%'
formatPercent(0.0001); // => '+0.01%'

// 极大值
formatPercent(1e10); // => '+1000000000000.00%'

性能说明

  • 时间复杂度: O(1)
  • 空间复杂度: O(1)
  • 保留2位小数,使用严格四舍五入算法,确保精度准确
  • 字符串验证使用正则表达式,性能高效

相关方法

版本历史

  • v1.0.0: 初始版本