1、问题描述
小M在工作时遇到了一个问题,他需要将用户输入的不带千分位逗号的数字字符串转换为带千分位逗号的格式,并且保留小数部分。小M还发现,有时候输入的数字字符串前面会有无用的 0,这些也需要精简掉。请你帮助小M编写程序,完成这个任务。
2、测试样例
样例1:
输入:s = "1294512.12412"
输出:'1,294,512.12412'
样例2:
输入:s = "0000123456789.99"
输出:'123,456,789.99'
样例3:
输入:s = "987654321"
输出:'987,654,321'
3、解题思路
1、将数据按‘.’进行分割
2、先将整数转为字符串类型(确保整数前面多余的0去掉),然后进行每隔3位添加逗号
3、最后将处理好的数据进行返回
function solution(s) {
// 先解析出整数部分和小数部分
const [ integerNumber, decimalNumber = null] = s.split('.');
// 将整数部分转换为数组,并且反转,然后通过取余的方式去加逗号,再反转回来
const result = BigInt(integerNumber).toString().split('').reverse().reduce((list, item, index) => {
if (index > 0 && index % 3 === 0) {
list.push(',')
}
list.push(item)
return list
}, []).reverse().join('')
// 如果有小数部分,则添加上去
return !decimalNumber ? result : `${result}.${decimalNumber}`;
}
function main() {
console.log(solution("77134900601876576") === "77,134,900,601,876,576");
console.log(solution("0000123456789.99") === '123,456,789.99');
console.log(solution("987654321") === '987,654,321');
}
main();