/**
* 计算百分比变化
* @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,
}
}