js浮点数加减乘除精度不准确
做个记录,以备不时之需
 //加法
    Number.prototype.add = function(arg){
        var r1,r2,m;
        try{r1=this.toString().split(".")[1].length}catch(e){r1=0}
        try{r2=arg.toString().split(".")[1].length}catch(e){r2=0}
        m=Math.pow(10,Math.max(r1,r2))
        return (this*m+arg*m)/m
    }
//减法
Number.prototype.sub = function (arg){
    return this.add(-arg);
}   
//乘法
Number.prototype.mul = function (arg)
{
    var m=0,s1=this.toString(),s2=arg.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)
}   
//除法
Number.prototype.div = function (arg){
    var t1=0,t2=0,r1,r2;
    try{t1=this.toString().split(".")[1].length}catch(e){}
    try{t2=arg.toString().split(".")[1].length}catch(e){}
    r1=Number(this.toString().replace(".",""))
    r2=Number(arg.toString().replace(".",""))
    return (r1/r2)*Math.pow(10,t2-t1);
}js浮点数加减乘除精度不准确的更多相关文章
- 关于js浮点数计算精度不准确问题的解决办法
		今天在计算商品价格的时候再次遇到js浮点数计算出现误差的问题,以前就一直碰到这个问题,都是简单的使用tofixed方法进行处理一下,这对于一个程序员来说是及其不严谨的.因此在网上收集了一些处理浮点数精 ... 
- js 浮点数计算精度不准确问题
		或许很多人都遇到过,js 对小数的加.减.乘.除时经常得到一些奇怪的结果! 比如 :0.1 + 0.2 = 0.3 ? 这么一个简单的计算,当你用js 计算时会发现结果是:0.30000000000 ... 
- 学以致用:手把手教你撸一个工具库并打包发布,顺便解决JS浮点数计算精度问题
		本文讲解的是怎么实现一个工具库并打包发布到npm给大家使用.本文实现的工具是一个分数计算器,大家考虑如下情况: \[ \sqrt{(((\frac{1}{3}+3.5)*\frac{2}{9}-\fr ... 
- js浮点数加减乘除
		浮点数精确计算 /** ** 加法函数,用来得到精确的加法结果 ** 说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显.这个函数返回较为精确的加法结果. ** 调用:ac ... 
- js浮点数运算精度问题
		https://www.cnblogs.com/yadongliang/p/9067333.html 
- 如何避开JavaScript浮点数计算精度问题(如0.1+0.2!==0.3)
		不知道大家在使用JS的过程中有没有发现某些浮点数运算的时候,得到的结果存在精度问题:比如0.1 + 0.2 = 0.30000000000000004以及7 * 0.8 = 5.60000000000 ... 
- js小数加减乘除时精度不准确
		版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qq_33237207/article/d ... 
- JS浮点数精度运算
		一般来讲,我们在项目中必不可少的需要进行各种数值的计算,但是这种计算全部放在服务端会给服务器带来很大的压力,所以势必要客户端来 分担一些计算的压力. 从客户端来说,JavaScript是一门弱类型语言 ... 
- 封装加减乘除函数 解决JS 浮点数计算 Bug
		计算机内部的信息都是由二进制方式表示的,即0和1组成的各种编码,但由于某些浮点数没办法用二进制准确的表示出来,也就带来了一系列精度问题.当然这也不是JS独有的问题. 例如, 我们在用JS做浮点运算会遇 ... 
随机推荐
- base64转码,解码方法
			function Base64() { // private property _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr ... 
- git 新建仓库
			rm -rf .git git init git add . git commit -m "Initial commit" git remote add origin <gi ... 
- c# WinForm 文本输入对话框
			这种功能为什么不向MessageBox一样自带,还得自己写~~ 代码: public InputBox(string label) { InitializeComponent(); label1.Te ... 
- NTP时间服务
			时间服务 NTP:Network Time Protocol 作用:用来给其他主机提供时间同步服务 NTP的配置文件 /etc/ntp.conf NTP相关的命令 date:显示/修改系统时间 hwc ... 
- nagios监控mysql及邮件报警
			1.使用默认监控命令check_http命令+相关的参数来实现,如下: 在command.cfg添加如下关键词监控命令:check_http_word,参数解析:-I指定IP或者主机名,-u指定URL ... 
- Loadrunner进行HTTPS协议性能测试
			1.最简单办法就是在脚本前面加上:web_set_sockets_option("SSL_VERSION","TLS"),一般能解决HTTPS协议的请求问题,无 ... 
- 采用ftpServer构建嵌入式ftp服务器时设置pass功能
			讲ftpserver嵌入式ftp服务器的文章很多,但是都没有介绍pass功能设置的. apach上pass部分也是针对的ftpd服务器的xml配置,关于嵌入式ftp服务器设置pass功能的部分几乎没有 ... 
- docker容器跑redis
			命令行配置: $ docker search redis $ docker pull docker.io/redis $ mkdir -p /redis/etc/conf /redis/lib /r ... 
- vim matchit 自定义配对关键字之间的跳转
			vim因其强大的扩展性一直深受linux程序员的喜爱,最近在用vim写verilog的时候,由于一个逻辑块中的begin end较多,常常会多写或者漏掉匹配关键字,很是苦恼,于是寻找匹配关键字间跳转的 ... 
- 算法练习LeetCode初级算法之其他
			位1的个数 解法一: class Solution { // you need to treat n as an unsigned value public int hammingWeight(int ... 
