import * as cnUtils from '@cainiaofe/cn-utils'; import { TLanguage } from '@cainiaofe/cn-i18n'; export const STANDARD_DECIMAL_SEPARATOR = '.'; /** * 格式化数字 * @param num - 数字 * @param adapterLocale - 本地化适配标 * @returns - */ export const numberFormat = ( num: string | number, adapterLocale?: boolean | TLanguage, ) => { if (!num) { return num; } if (!adapterLocale || !cnUtils?.numberFormat) { return num; } return cnUtils?.numberFormat(num, adapterLocale, { maximumFractionDigits: 20, }); }; /** * 获取小数点 * @param adapterLocale - 本地化适配标 * @returns - */ export const getDecimalSeparator = (adapterLocale?: boolean | TLanguage) => { if (!adapterLocale || !cnUtils?.getDecimalSeparator) { return STANDARD_DECIMAL_SEPARATOR; } return cnUtils?.getDecimalSeparator(adapterLocale); }; /** * 将标准格式转本地格式 * @param numText - 数字 * @param adapterLocale - 本地化适配标 * @returns - */ export const convertStandardToLocale = ( numText: string, adapterLocale?: boolean | TLanguage, ) => { if (!adapterLocale || !numText) { return numText; } return `${numText}`.replace?.( STANDARD_DECIMAL_SEPARATOR, getDecimalSeparator(adapterLocale), ); }; /** * 将本地格式转标准格式 * @param numText - 数字 * @param adapterLocale - 本地适配标 * @returns - */ export const convertLocaleToStandard = ( numText: string, adapterLocale?: boolean | TLanguage, ) => { if (!adapterLocale || !numText) { return numText; } return `${numText}`.replace?.( getDecimalSeparator(adapterLocale), STANDARD_DECIMAL_SEPARATOR, ); };