在javascript中,当你使用小数进行加减乘除运算时,你会发现,所得到的结果有时后面带有长长的一段小数,使运算变得复杂,并且影响计算结果。上网查询了一下原因,大致如下:在javascript中,带小数的数据运算时总会出现好多位小数.这是因为在javascript中浮点数的计算是以2进制计算的。于是在网上找了一下解决方法,在此做一下总结,以便以后使用,同时,希望对有需要的朋友有所帮助。

解决方法思路:将小数化成整数后再作运算。具体代码如下:

/**

* 加法运算,避免数据相加小数点后产生多位数和计算精度损失。

*

* @param num1加数1 | num2加数2

*/

function numAdd(num1, num2) {

var baseNum, baseNum1, baseNum2;

try {

baseNum1 = num1.toString().split(".")[1].length;

} catch (e) {

baseNum1 = 0;

}

try {

baseNum2 = num2.toString().split(".")[1].length;

} catch (e) {

baseNum2 = 0;

}

baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));

return (num1 * baseNum + num2 * baseNum) / baseNum;

};

/**

* 加法运算,避免数据相减小数点后产生多位数和计算精度损失。

*

* @param num1被减数 | num2减数

*/

function numSub(num1, num2) {

var baseNum, baseNum1, baseNum2;

var precision;// 精度

try {

baseNum1 = num1.toString().split(".")[1].length;

} catch (e) {

baseNum1 = 0;

}

try {

baseNum2 = num2.toString().split(".")[1].length;

} catch (e) {

baseNum2 = 0;

}

baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));

precision = (baseNum1 >= baseNum2) ? baseNum1 : baseNum2;

return ((num1 * baseNum - num2 * baseNum) / baseNum).toFixed(precision);

};

/**

* 乘法运算,避免数据相乘小数点后产生多位数和计算精度损失。

*

* @param num1被乘数 | num2乘数

*/

function numMulti(num1, num2) {

var baseNum = 0;

try {

baseNum += num1.toString().split(".")[1].length;

} catch (e) {

}

try {

baseNum += num2.toString().split(".")[1].length;

} catch (e) {

}

return Number(num1.toString().replace(".", "")) * Number(num2.toString().replace(".", "")) / Math.pow(10, baseNum);

};

/**

* 除法运算,避免数据相除小数点后产生多位数和计算精度损失。

*

* @param num1被除数 | num2除数

*/

function numDiv(num1, num2) {

var baseNum1 = 0, baseNum2 = 0;

var baseNum3, baseNum4;

try {

baseNum1 = num1.toString().split(".")[1].length;

} catch (e) {

baseNum1 = 0;

}

try {

baseNum2 = num2.toString().split(".")[1].length;

} catch (e) {

baseNum2 = 0;

}

with (Math) {

baseNum3 = Number(num1.toString().replace(".", ""));

baseNum4 = Number(num2.toString().replace(".", ""));

return (baseNum3 / baseNum4) * pow(10, baseNum2 - baseNum1);

}

};

js小数运算出现多为小数问题_js 数字加减乘除精度问题,解决小数点后多位小数...相关推荐

  1. js中获取小数点后两位小数

    在 JavaScript 中,可以使用 toFixed() 方法来获取小数点后的指定位数. 例如,如果要获取一个数字的小数点后两位小数,可以这样写: var num = 3.14159265; var ...

  2. html正则表达式 小数点后两位,java的正则表达式的小数点后两位小数

    java的正则表达式的小数点后两位小数 [2021-02-10 03:42:04]  简介: [相关学习推荐:js视频教程]测试代码 //1.只能输入数字或者小数点 仅整数,整数加小数 var reg ...

  3. numpy 数组 保留小数点后两位小数

    numpy 数组 保留小数点后两位小数 a1 = np.random.rand(6).reshape(2,3) print(a1) [[0.64382693 0.73840787 0.77315906 ...

  4. php转化为2位小数的数字,学习猿地-php 转化为两位小数的方法

    php转化为两位小数的方法:1.利用"round()"对浮点数进行四舍五入:2.利用"sprintf"格式化字符串:3.利用千位分组来格式化数字的函数" ...

  5. PHP取小数点后一位小数或几位小数并且不四舍五入,以及四舍五入保留小数

    PHP取小数点后一位小数或几位小数并且不四舍五入,以及四舍五入保留小数 这里用到一个 floor() 函数 //floor() 函数向下舍入为最接近的整数,也就是不会进行四舍五入. floor() 假 ...

  6. js小数运算出现多为小数问题_js小数计算小数点后显示多位小数的实现方法

    首先写一个demo 重现问题,我使用的是一个js在线测试环境[打开] 改写displaynum()函数 function displaynum(){var num = 22.77;alert(num ...

  7. js小数运算出现多为小数问题_JS操作小数运算,结果莫名其妙出现多位小数问题...

    Number类型: Number类型是ECMAScript中最常用和最令人关注的类型了:这种类型使用IEEE754格式来表示整数和浮点数值(浮点数值在某些语言中也被成为双精度数值),为支持各种数据类型 ...

  8. 小程序使用wxs 解决wxml保留2位小数问题

    1.出现溢出表现 从图中可以看到数字超出了很长长度.代码里面是如下这样的.为什么在0.35出现?或者一些相成的计算出现? 而 0.34却不会. 0.41 也会出现,好像是二进制运算出现结果. data ...

  9. JAVA零碎要点015---java BigDecimal常见操作_加减乘除操作_比较_取几位小数四舍五入_随时更新

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 之前项目都很少用这个BigDecimal啊,最近这个项目对精度要求高,一个电视购物,广告拍摄,排挡 ...

最新文章

  1. 为Delphi应用增加脚本支持
  2. xmake入门,构建项目原来可以如此简单
  3. 用GPUDirect RDMA技术做的代码测试
  4. OpenCV C++ 01 - Load Image from File and Display
  5. [Windows] 在 Microsoft Docs 网站中挖掘 MVVM 的各种学习资源
  6. mybatis支持驼峰自动转换sql吗_SpringBoot整合mybatis——配置mybatis驼峰命名规则自动转换...
  7. Polka.Domain完成40万美元私募轮融资
  8. 年轻人找不到自己喜欢的工作,怎么办?
  9. win10 中的系统变量 windir、userProfile 等
  10. 麦克纳姆轮全向移动机器人运动学模型应用
  11. 19.docker attach
  12. 相平衡计算matlab代码,MATLAB,气液相平衡程序,求帮忙改一下。 - 仿真模拟 - 小木虫 - 学术 科研 互动社区...
  13. oracle判断日期字符串格式,如何测试日期格式字符串是否为Oracle中的有效日期格式字符串...
  14. FastDFS的安装讲解
  15. 稳妥方法论:如何完整地设计出游戏关卡及场景
  16. android的otg功能,Android实现OTG功能
  17. 使用Xcode的Instruments检测解决iOS内存泄露(leak)
  18. 一款【免费+简单+好用+性能强大】的词云(Wordcloud)制作工具(含详细介绍)
  19. Javascript里EQ、NE、GT、LT、GE、LE含义
  20. 概论_第5章_切比雪夫不等式

热门文章

  1. 如何能能够学好软件编程技术
  2. 使用Vue2.x高效还原美团外卖项目
  3. 计算机二级判断题技巧一半对一半错,计算机二级小技巧
  4. html overflow 样式,css修改overflow滚动条默认样式
  5. 安装chrome_Chrome 离线安装包下载
  6. 单模光电转换器怎么接_单模光纤收发器怎么连接?
  7. protobuf数据类型_protobuf【1】
  8. python列表内元素求和_在Python中将列表的每个元素与另一个列表的每个元素相乘/相加/相除的有效方法...
  9. 最简易上手的numpy学习笔记二
  10. 基因组浏览器IGV的安装和图形解读