js精确加减乘除

//加法函数
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;
}
//给Number类型增加一个add方法,,使用时直接用 .add 即可完成计算。
Number.prototype.add = function (arg) {
return accAdd(arg, this);
};

//减法函数
function Subtr(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);
}

//给Number类型增加一个add方法,,使用时直接用 .sub 即可完成计算。
Number.prototype.sub = function (arg) {
return Subtr(this, arg);
};

//乘法函数
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);
}
//给Number类型增加一个mul方法,使用时直接用 .mul 即可完成计算。
Number.prototype.mul = function (arg) {
return accMul(arg, this);
};

//除法函数
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);
}
}
//给Number类型增加一个div方法,,使用时直接用 .div 即可完成计算。
Number.prototype.div = function (arg) {
return accDiv(this, arg);
};

时间: 2024-10-20 20:11:08

js精确加减乘除的相关文章

第十四篇 JS实现加减乘除 正则表达式

JS实现加减乘除 这节课,将会继续使用到if判断,会让同学们再看到一个新的,else if判断语句,意思是:否则如果,是基于if下的判断语句,就是说,if不成立则再来判断else if,可以这样,假如a=1,if(a=2){我是2}else if(a=1){我是1}else{我是3},就是这样的关联,但有的同学问,直接用if一直判断就好了,不需要用else if,是这样的,程序运行,else if是基于if的对吧,那么它就是一条语句,如果相同的判断语句多了,全用if,程序就会一个一个去执行,量就

JS实现精确加减乘除

说明:项目中要使用 JS 实现自动计算的功能,进行一些浮点数运算时,计算结果却是一长串的值,这里提供一个解决方法,问题基本上可以解决. 具体代码如下: 1 //加法函数 2 function accAdd(arg1, arg2) { 3 var r1, r2, m; 4 try { 5 r1 = arg1.toString().split(".")[1].length; 6 } 7 catch (e) { 8 r1 = 0; 9 } 10 try { 11 r2 = arg2.toSt

js 实现精确加减乘除

//加法 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

js精确四则运算

由于js的乘除和加减运算有时会出现丢失精度的问题,同时,两个非数字相加也会出现类型转换的问题,所以特地写了一个四则运算的js不丢失精度版来处理js中的四则运算. /** * 精确加法 * * @param {String | Number} arg1 * @param {String | Number} arg2 * * @returns {number} arg1 + arg2 */ exports.add = function add(arg1, arg2) { // 数字化 var num

JS 精确乘除法

javascript(js)的小数点乘法除法问题 分类: Javascript2012-07-24 10:09 2851人阅读 评论(0) 收藏 举报 javascriptfunctionmath测试div 一.用js计算 12.32 * 7  结果是多少? 答案:86.24000000000001 为什么会出现这种问题?怎么解决? js在处理小数的乘除法的时候有一个bug,解决的方法可以是:将小数变为整数来处理. 以上的计算可以改为: 12.32 * 100 * 7 /100 得出的结果是:8

BigDecimal实现精确加减乘除运算

BigDecimal一共有4个够造方法,让我先来看看其中的两种用法: 第一种:BigDecimal(double val)Translates a double into a BigDecimal. 第二种:BigDecimal(String val)Translates the String repre sentation of a BigDecimal into a BigDecimal. 使用BigDecimal要用String来够造,要做一个加法运算,需要先将两个浮点数转为String,

javascript 精确加减乘除

最近一个项目中要使用 JS 实现自动计算的功能,本以为只是实现简单的加.减.乘.除就可以了,于是三下五除二做完了. 正当我窃喜的时候,发现问题了... 进行一些浮点数运算时,计算结果都是让我大跌眼镜啊,那个值让我哭笑不得,一长串的值,太牛了... 我那个纳闷啊!!不过还好牛人多,给了我一解决方案,嘿嘿...问题基本上解决了,为了表示感觉,我决定把代码贴出来,大家共享一下,希望能给部分人一些帮助. Js代码   //加法函数 function accAdd(arg1, arg2) { var r1

js实现加减乘除的小程序

<!DOCTYPE html> <html> <head> <title> 事件</title> <script type="text/javascript"> function count(){ //获取第一个输入框的值 var x=parseInt(document.getElementById("txt1").value); //获取第二个输入框的值 var y=parseInt(docu

JS精确到小数点两位

1.会四色五入 var num =2.446242342; num = num.toFixed(2); // 输出结果为 2.452.正则Number(15.7784514000.toString().match(/^\d+(?:\.\d{0,2})?/)) 3.最笨function get() {     var s = 22.127456 + "";     var str = s.substring(0,s.indexOf(".") + 3);     ale