Skip to content

Commit

Permalink
feat: new function - yuanToFen
Browse files Browse the repository at this point in the history
  • Loading branch information
GreatAuk committed Jan 17, 2024
1 parent b110973 commit 0ca3ff8
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ pnpm add @utopia-utils/dom
* formatNumberThousand: 数字千分位格式化。[source](https://github.com/GreatAuk/utopia-utils/blob/main/packages/core/src/formatNumberThousand.ts)
* base64ToFile: base64 转 File, 如图片裁剪时,我们获取到的是 base64,但上传接口一般需要 formData 上传。[source](https://github.com/GreatAuk/utopia-utils/blob/main/packages/core/src/base64ToFile.ts)
* toBase64: 将 File | Blob | imgUrl 转 base64。[source](https://github.com/GreatAuk/utopia-utils/blob/main/packages/core/src/toBase64.ts)
* yuanToFen: 人民币:元转分。[source](https://github.com/GreatAuk/utopia-utils/blob/main/packages/core/src/yuanToFen.ts)
### 类型判断

```bash
Expand Down
36 changes: 36 additions & 0 deletions packages/core/src/yuanToFen.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import { afterEach, describe, expect, it, vi } from 'vitest'

import { yuanToFen } from './yuanToFen'

describe('yuanToFen', () => {
afterEach(() => {
vi.restoreAllMocks()
})
it('should return undefined when input is not number', () => {
expect(yuanToFen(null as any)).toBe(undefined)
expect(yuanToFen(undefined as any)).toBe(undefined)
expect(yuanToFen('' as any)).toBe(undefined)
expect(yuanToFen('abc' as any)).toBe(undefined)
expect(yuanToFen({} as any)).toBe(undefined)
expect(yuanToFen([] as any)).toBe(undefined)
expect(yuanToFen(true as any)).toBe(undefined)
expect(yuanToFen(false as any)).toBe(undefined)
expect(yuanToFen(NaN as any)).toBe(undefined)
})
it('happy path', () => {
expect(yuanToFen(0)).toBe(0)
expect(yuanToFen(1)).toBe(100)
expect(yuanToFen(100)).toBe(10000)
expect(yuanToFen(1000)).toBe(100000)
expect(yuanToFen(99)).toBe(9900)
expect(yuanToFen(10000)).toBe(1000000)
expect(yuanToFen(100000)).toBe(10000000)
expect(yuanToFen(1000000000000000000)).toBe(100000000000000000000)
})
it('should return undefined if throw error', () => {
vi.spyOn(Number, 'isNaN').mockImplementation(() => {
throw new Error('mock error')
})
expect(yuanToFen(100)).toBe(undefined)
})
})
19 changes: 19 additions & 0 deletions packages/core/src/yuanToFen.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import { times } from 'number-precision'
import { isNumber } from '@utopia-utils/share'

/**
* 金额¥ 元转分
* @param yuan 元
* @returns 分, 如果输入不是数字,则返回 undefined
*/
export function yuanToFen(yuan: number | undefined): number | undefined {
try {
if (!isNumber(yuan) || Number.isNaN(yuan))
return undefined
return times(yuan, 100)
}
catch (err) {
console.error(err)
return undefined
}
}

0 comments on commit 0ca3ff8

Please sign in to comment.