我是靠谱客的博主 忧心电灯胆,最近开发中收集的这篇文章主要介绍js对string类型的数值做四舍五入,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

//string数据小数位四舍五入
//用法 roundUp('3.456',2)
输出'3.46'
export const roundUp = function (str, decimalNum) {
const newNumArr = str.split('.')
if (newNumArr.length === 1) {
return str + '.00'
}
//decimalPlaces小数位
const decimalPlaces = newNumArr[1] ? newNumArr[1].length : 0
//如果小数位没有
if (decimalPlaces === 0) {
str += '.'
const fillCount = decimalNum - decimalPlaces
for (let i = 0; i < fillCount; i++) {
str += '0'
}
return str
}
//如果小数位长度小于要四舍五入的长度
if (decimalNum > decimalPlaces) {
const fillCount = decimalNum - decimalPlaces
for (let i = 0; i < fillCount; i++) {
str += '0'
}
return str
}
// return
if (decimalNum) {
if (newNumArr[1].split('').length > decimalNum) {
//
进行四舍五入
const rightArr = newNumArr[1].split('')
if (Number(rightArr[decimalNum]) >= 5) {
let i = decimalNum - 1
// let i = decimalNum
rightArr[i] = Number(rightArr[i]) + 1
while (i > 0 && Number(rightArr[i]) === 10) {
rightArr[i] = 0
i--
rightArr[i] = Number(rightArr[i]) + 1
}
if (i === 0 && rightArr[i] === 10) {
rightArr[i] = 0
//
再对数组左边进行换算
const leftArr = newNumArr[0].split('')
let j = leftArr.length - 1
leftArr[j] = Number(leftArr[j]) + 1
while (j > 0 && leftArr[j] === 10) {
leftArr[j] = 0
j--
leftArr[j] = Number(leftArr[j]) + 1
}
// 到首位了,不需要判断了
newNumArr[0] = leftArr.join('')
}
}
newNumArr[1] = rightArr.join('')
newNumArr[1] = newNumArr[1].split('').splice(0, decimalNum).join('')
} else {
newNumArr[1].padEnd(decimalNum, 0)
}
const s = decimalNum ? newNumArr.join('.') : newNumArr[0]
return s
}
}

最后

以上就是忧心电灯胆为你收集整理的js对string类型的数值做四舍五入的全部内容,希望文章能够帮你解决js对string类型的数值做四舍五入所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部