/** * 计算百分比变化 * @param {number} cur - 当前值。 * @param {number} prev - 之前的值。 * @returns {{ diff: number, percentage: string }} 包含差值和百分比变化的对象。 */ export const calculatePercentageChange = (cur: number, prev: number) => { // 计算差值 const diff = cur - prev if (diff === 0) return { diff, percentage: "0", } // 计算百分比 const percentage = Math.abs((diff / prev) * 100).toFixed(1) return { diff, percentage, } } /** * 计算周同比 * @param {string | number} cur - 当前值。 * @param {string | number} prev - 之前的值。 * @param {boolean} [needCN=true] - 是否需要中文描述。 * @returns {{ text: string, diff: number, percentage: string }} 包含描述文本、差值和百分比变化的对象。 */ export const calculateWeeklyRate = ( cur: string | number, prev: string | number, needCN = true ) => { const { diff, percentage } = calculatePercentageChange( Number(cur), Number(prev) ) if (diff > 0) return { text: `${ needCN ? "较上周 " : "" }↑${percentage}%`, diff, percentage, } if (diff < 0) return { text: `${ needCN ? "较上周 " : "" }↓${percentage}%`, diff, percentage, } return { text: `${needCN ? "较上周 " : ""}0%`, diff, percentage, } }