栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

写一个把数字转成中文的方法,例如:101转成一百零一

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

写一个把数字转成中文的方法,例如:101转成一百零一

const digitChar = ['', ...'一二三四五六七八九']const posChar = ['', ...'十百千万   亿']const placeholder = '零'function toChineseNumeralUnder万(digits) {    let revDigits = digits.split('').reverse()    let result = ''    for (let pos = 0; pos < revDigits.length; pos++) {        const digit = Number(revDigits[pos])        if (digit) { result = posChar[pos] + result }        if (digit !== 1 || pos !== 1) { result = digitChar[digit] + result }        if (!digit && pos && result && !result.startsWith(placeholder)) { result = placeholder + result }    }    return result}function toChineseNumeralUnder亿(digits) {    let highPart = toChineseNumeralUnder万(digits.slice(-8, -4))    if (highPart)        { highPart += posChar[4] }    let lowPart = toChineseNumeralUnder万(digits.slice(-4))    return highPart + lowPart}function toChineseNumeral(digits) {    let fragment = ''    const result = []    for (const digit of digits.split('').reverse()) {        if (fragment.length === 8) { result.unshift(toChineseNumeralUnder亿(fragment)) fragment = ''        }        fragment = digit + fragment    }    result.unshift(toChineseNumeralUnder亿(fragment))    if (result[0].startsWith(placeholder))        { result[0] = result[0].slice(1) }    return result.join(posChar[8]) || placeholder}toChineseNumeral('0')// => '零'toChineseNumeral('101')// => '一百零一'toChineseNumeral('1000001')// => '一百万零一'toChineseNumeral('123456708')// => '一亿二千三百四十五万六千七百零八'toChineseNumeral('3274823947329471041041234567080')// => '三百二十七万四千八百二十三亿九千四百七十三万二千九百四十七亿一千零四十一万零四百一十二亿三千四百五十六万七千零八十'

函数名很弱智,不要在意(

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/369712.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号