JS脚本_浮点数截位[直接截位,带四舍五入功能]

本文分享了一种在JavaScript中处理浮点数的有效方法。针对页面中以#,##0.00格式显示的浮点数,文章提供了去除逗号、转换为浮点型数值以及进行精确的浮点数截位或四舍五入操作的具体实现。
纯收集JS有用的脚本函数。
js的浮点数处理是值得关注的问题。不久前写了个页面浮点数校验的功能。页面中浮点数是以#,##0.00的格式显示的,在js中肯定不能用+直接做了。在js中对浮点数的处理如下:

notBlend = notBlend.replace(/,/g,""); //js的replace是支持正则表达式的,/,/代表要替换的字符,g代表全部替换
notBlend = parseFloat(notBlend);//去掉逗号后转换为float。js是没有parseDouble的
notBlend = formatnumber(notBlend,2);




//浮点数直接截位函数
function formatnumber(value,num){
var tmp,idx,len,i
tmp = value.toString();
idx = tmp.indexOf('.');
len = tmp.length;
if (num==0){
if (idx!=-1)
tmp = tmp.substring(0,idx);
}
else{
if (idx==-1){
tmp = tmp + ".";
for (i=1;i<=num;i++)
tmp = tmp + "0";
} else {
tmp = tmp.substring(0,idx+num+1);
for (i=len;i<=idx+num;i++)
tmp = tmp + "0";
}
}
return tmp
}

//截位带四舍五入
function adv_format(value,num) //四舍五入
{
var a_str = formatnumber(value,num);
var a_int = parseFloat(a_str);
if (value.toString().length>a_str.length){
var b_str = value.toString().substring(a_str.length,a_str.length+1)
var b_int = parseFloat(b_str);
if (b_int<5){
return a_str
}else{
var bonus_str,bonus_int;
if (num==0){
bonus_int = 1;
}else{
bonus_str = "0."
for (var i=1; i<num; i++)
bonus_str+="0";
bonus_str+="1";
bonus_int = parseFloat(bonus_str);
}
a_str = formatnumber(a_int + bonus_int, num)
}
}
return a_str
}


### JavaScript 封装四舍五入方法 在 JavaScript 中,可以通过多种方式实现一个用于四舍五入功能。以下是基于常见需求设计的一个通用解决方案。 #### 方法定义 为了满足不同精度的要求,可以创建一个名为 `roundNumber` 的函数,该函数接受两个参数:一个是需要处理的数值 (`value`),另一个是指定的小数数 (`decimalPlaces`)。此函数利用数学运算来完成目标[^1]: ```javascript function roundNumber(value, decimalPlaces) { const factor = Math.pow(10, decimalPlaces); return (Math.round(value * factor) / factor).toFixed(decimalPlaces); } ``` 这段代码的核心逻辑在于先放大数值到指定倍率后再执行取整操作,最后再缩小回原比例并转换成固定长度的小数形式输出[^2]。 #### 使用示例 下面展示了如何调用上面定义好的 `roundNumber` 函数来进行各种情况下的四舍五入计算: ```javascript console.log(roundNumber(1.07777, 1)); // 输出:"1.1" console.log(roundNumber(1.07777, 2)); // 输出:"1.08" console.log(roundNumber(1.07777, 3)); // 输出:"1.078" console.log(roundNumber(1.07777, 4)); // 输出:"1.0778" ``` 以上例子说明了无论输入什么样的浮点数或者希望保留多少个小数都可以得到预期的结果[^2]。 另外需要注意的是,在某些特殊情况下如果原始数据本身存在表达误差,则可能会影响最终结果准确性;因此建议对于金融级应用考虑采用更精确的数据类型或库来代替基本算术运算[^3]。 #### 完整版测试脚本 这里提供了一个完整的测试程序以便验证上述函数的行为是否符合预期: ```javascript // 主体部分 function roundNumber(value, decimalPlaces){ const factor = Math.pow(10, decimalPlaces); return (Math.round(value*factor)/factor).toFixed(decimalPlaces); } // 调试打印 let testValues=[1.07777]; for(let i=0;i<testValues.length;i++){ for(var j=1;j<=4;j++) { console.log(`Value=${testValues[i]}, Decimals=${j} => Result=${roundNumber(testValues[i], j)}`); } } ``` 运行以上代码将会展示一系列不同的组合及其对应的四舍五入后的值。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值