diff --git a/web-admin/src/utils/rmb-upper.test.ts b/web-admin/src/utils/rmb-upper.test.ts index 2973e1d8..fa43f331 100644 --- a/web-admin/src/utils/rmb-upper.test.ts +++ b/web-admin/src/utils/rmb-upper.test.ts @@ -35,4 +35,9 @@ describe('toRmbUpper', () => { assert.ok(s.includes('角') || s.includes('分')) assert.notEqual(s, '金额过大') }) + it('yi to yuan zero padding', () => { + assert.equal(toRmbUpper(100000001), '壹亿零壹元整') + assert.equal(toRmbUpper(100000010), '壹亿零壹拾元整') + assert.equal(toRmbUpper(100010000), '壹亿零壹万元整') + }) }) diff --git a/web-admin/src/utils/rmb-upper.ts b/web-admin/src/utils/rmb-upper.ts index 2f8ca8ef..de762f1c 100644 --- a/web-admin/src/utils/rmb-upper.ts +++ b/web-admin/src/utils/rmb-upper.ts @@ -44,7 +44,7 @@ export function toRmbUpper(value: number | null | undefined): string { if (yuan > 0) { const yi = Math.floor(yuan / 100000000) - const wan = Math.floor((yuan % 100000000) / 10000) + const wan = Math.floor(yuan / 10000) % 10000 const rest = yuan % 10000 if (yi > 0) { @@ -55,11 +55,13 @@ export function toRmbUpper(value: number | null | undefined): string { result += '零' } result += sectionToChinese(wan) + '万' - } else if (yi > 0 && rest > 0) { - result += '零' } if (rest > 0) { - if ((yi > 0 || wan > 0) && rest < 1000) { + if (wan > 0) { + if (rest < 1000) { + result += '零' + } + } else if (yi > 0) { result += '零' } result += sectionToChinese(rest)