fix(core): 明细用量美元保留 6 位小数
This commit is contained in:
@@ -18,6 +18,15 @@ export function microUsdToQuotaUsdStr(micro: number): string {
|
||||
return `${dollars}.${String(rem).padStart(2, "0")}`;
|
||||
}
|
||||
|
||||
/** 明细行等小额场景:保留更多小数位(默认 4 位,仍是字符串两位小数契约的展示增强) */
|
||||
export function microUsdToQuotaUsdStrPrecise(
|
||||
micro: number,
|
||||
fractionDigits = 4,
|
||||
): string {
|
||||
const usd = micro / 1_000_000;
|
||||
return usd.toFixed(fractionDigits);
|
||||
}
|
||||
|
||||
export function quotaToUsdStr(quota: number, qpu: number): string {
|
||||
return microUsdToQuotaUsdStr(quotaToMicroUsd(quota, qpu));
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
*/
|
||||
import {
|
||||
microSumToUsdStr,
|
||||
microUsdToQuotaUsdStrPrecise,
|
||||
qpuAt,
|
||||
quotaToMicroUsd,
|
||||
quotaToUsdStr,
|
||||
@@ -54,6 +55,21 @@ export function usageAt(
|
||||
return { count: 1, quota, quota_usd: quotaToUsdStr(quota, qpu) };
|
||||
}
|
||||
|
||||
/** 明细行:按当时 QPU 换算,展示保留 6 位小数(微美元级,小额不被抹成 0) */
|
||||
export function usageRowPrecise(
|
||||
quota: number,
|
||||
created_at: Date | number,
|
||||
timeline: readonly QpuPoint[],
|
||||
): UsageSum {
|
||||
const qpu = qpuAt(created_at, timeline);
|
||||
const micro = quotaToMicroUsd(quota, qpu);
|
||||
return {
|
||||
count: 1,
|
||||
quota,
|
||||
quota_usd: microUsdToQuotaUsdStrPrecise(micro, 6),
|
||||
};
|
||||
}
|
||||
|
||||
export function addUsage(a: UsageSum, b: UsageSum): UsageSum {
|
||||
// 合并已成形的两段时,quota_usd 需重算——调用方应尽量走 sumUsage
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user