来源网络,整理收藏。
项目中遇到 js 小数 会多余的部分。
小数加减后减乘除 如 0.55 *100 =55.00000000000001
看到这个错误,应该要自己写处理了。
先网上搜了下,搜到了,省自己写,下面提供了方法。
function accAdd(arg1,arg2){
var r1,r2,m;
try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
m = Math.pow(10,Math.max(r1,r2))
return (arg1*m+arg2*m)/m
}
function accSub(arg1,arg2){
var r1,r2,m,n;
try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
m=Math.pow(10,Math.max(r1,r2));
//last modify by deeka
//动态控制精度长度
n=(r1>=r2)?r1:r2;
return ((arg1*m-arg2*m)/m).toFixed(n);
}
function accMul(arg1,arg2) {
var m=0,s1=arg1.toString(),s2=arg2.toString();
try{m+=s1.split(".")[1].length}catch(e){}
try{m+=s2.split(".")[1].length}catch(e){}
return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m)
}
function accDiv(arg1,arg2){
var t1=0,t2=0,r1,r2;
try{t1=arg1.toString().split(".")[1].length}catch(e){}
try{t2=arg2.toString().split(".")[1].length}catch(e){}
with(Math){
r1=Number(arg1.toString().replace(".",""))
r2=Number(arg2.toString().replace(".",""))
return (r1/r2)*pow(10,t2-t1);
}
}
分享到:
相关推荐
### JavaScript保留两位小数的方法详解 在日常的前端开发工作中,我们经常需要处理数值运算,尤其是在涉及财务计算或展示精确度较高的数据时,对数值进行格式化处理是必不可少的一个环节。其中,一个常见的需求就是...
由于JavaScript内部使用的是IEEE 754标准来存储和处理浮点数,这可能导致在进行小数运算时出现精度丢失问题,尤其是在涉及大数字或者循环计算时。本篇将深入探讨这个问题,并提供一些解决方案。 首先,我们来理解...
例如,`Number.prototype.rate`函数用于获取小数部分的位数,而`accDiv`和`accMul`则通过移除小数点并考虑位数差来实现精确乘除。这些自定义函数在处理复杂计算时非常有用。 4. **使用库或数据类型**:有一些...
3. 接着,计算两个数中最大小数位数,然后利用`Math.pow(10, maxDecimal)`计算一个乘数,这个乘数足够大,使得所有小数部分都被整数化,避免精度损失。 4. 最后,将两个参数分别与乘数相乘,然后相加,再除以相同的...
4. 除法(accDiv)函数:这个函数处理除法时的小数精度问题,通过调整除数和被除数的小数部分位数,并进行相应的乘除操作,来获得精确的商。 在实际开发过程中,当遇到JavaScript中的小数运算精度问题时,可以通过...
4. 整数特殊处理:当输入为整数时,需要进行特别处理,以保证即使没有小数部分也会在结果中显示为两位小数。 在实际应用中,为了提高代码的重用性和可维护性,可以将这种格式化的功能封装到一个可复用的函数中,...
而在JavaScript中,`toFixed`会正确处理负数的小数部分。 总的来说,C#.NET和JavaScript都提供了方便的函数来实现数字的四舍五入,并且都能轻松地保留两位小数。理解这些基本操作对于日常编程工作至关重要,特别是...
`toFixed(n)`方法是一种快速简便的方式,它可以将小数部分四舍五入到指定的位数。然而,这种方法可能会引入不必要的精度损失,因为它会改变数值的原始表示。例如,`(0.1 + 0.2).toFixed(1)`将结果四舍五入到一位小数...
"js只能输入数字(包括小数)的文本框"就是一个这样的需求,它通过JavaScript代码实现,允许用户在文本框中输入整数或小数,而排除其他非数字字符。这通常用于财务、统计或任何需要精确数值输入的场景。 JavaScript...
这个方法对于处理需要精确显示小数部分的场景尤其有用,比如金融计算或者数据展示。在给定的标题和描述中,重点讨论了如何使用`toFixed()`方法来保留两位小数。 `toFixed()`的基本语法是`number.toFixed(digits)`,...
if (alen.length == 1) { // 如果没有小数部分 alen = 0; } else { alen = alen[1].length; } var blen = b.toString().split("."); if (blen.length == 1) { blen = 0; } else { blen = blen[1].length;...
在进行JavaScript小数运算时,我们经常会遇到由于浮点数表示的限制而导致的精度问题。由于浮点数在计算机内部是以二进制形式表示的,部分十进制小数无法转换成一个精确的二进制小数,这导致了在运算过程中出现误差。...
- `keyNumDown(obj, count1, count2)`:主要函数,用于限制用户输入特定格式的数字(整数部分最多`count1`位,小数部分最多`count2`位)。 3. **代码逻辑分析** - **获取光标位置**:`getPosition`函数根据...
在处理数字时,可以用来分别处理整数部分和小数部分。 5. `length` 属性:用来获取字符串的长度。 了解了这些基础后,我们可以通过以下步骤来实现金额数字的格式化: 1. 首先,将传入的数字字符串中的逗号移除,...
`Math.floor()`函数用于向下取整,即无论小数部分是多少,都会将数值向下舍入到最接近的整数。例如,`Math.floor(12.9999)`的结果是`12`。这个方法常用于需要精确地去掉小数部分,不考虑向上调整的情况。 2. **...
需要注意的是,在某些编程语言中,还有其他方法来处理小数和整数的转换,例如向上取整到最接近的偶数(Math.roundToEven)或者直接截断小数部分保留整数(trunc),但在JavaScript中这些方法并不常用。 由于技术...
`bignumber.js`是一个专门处理大数的JavaScript库,支持任意精度的算术运算。这个库可以创建BigNumber对象,这些对象在进行加、减、乘、除等运算时不会丢失精度。例如,`var x = new BigNumber('...
6. 如果分割后的数组长度只有1位,说明没有小数部分,则需要手动在字符串末尾添加".00"。 7. 如果存在小数部分,并且长度小于2,即缺少一位小数,则在末尾添加"0"。 示例函数`returnFloat`便是基于以上逻辑实现的...
if (decimalValue % 1 == 0) { // 如果小数部分为0,说明是整数 return (int)decimalValue, 1; // 直接返回整数部分和1 } else { int numerator = (int)(decimalValue * Math.Pow(10, Math.Floor(Math.Log10...