1.获取常规数据的有效位数
function getDecimalPlaces(number) {
// 将数字转换为字符串形式
var absNumber = Math.abs(number)
var strNumber = absNumber.toString();
// 检查是否存在小数点
if(absNumber > 1 && strNumber.includes('.')){
return strNumber.replace('.','').length
} else if (absNumber < 1 && strNumber.includes('.')) {
// 分割整数和小数部分,并返回小数部分的长度
return strNumber.replace('.','').length - 1 ;
} else {
return strNumber.length;
}
}
2.保留指定位数有效数字
//保留指定位数有效数字
function ensureDecimalPlaces(number, desiredDecimals) {
// 将数字转换为字符串形式,不使用指数表示法
var strNumber = number.toPrecision().includes('e') ? number.toFixed(desiredDecimals) : number.toString();
// 检查是否有小数点,并分割整数和小数部分
var [integerPart, decimalPart = ""] = strNumber.split('.');
// 确保小数部分有足够的长度
var decimalLength = decimalPart.length;
if (decimalLength < desiredDecimals) {
// 补充零直到达到所需的小数位数
decimalPart = decimalPart + '0'.repeat(desiredDecimals - decimalLength);
} else if (decimalLength > desiredDecimals) {
// 如果小数部分过长,可以进行四舍五入
return parseFloat(number).toFixed(desiredDecimals);
}
// 返回带有指定小数位数的字符串
return `${integerPart}.${decimalPart}`;
}