一个js做相加运算的问题,但是相加之后出现问题。
functionfuckie5(){varsum1=document.getElementById("informationPrice").value;varsum2=d...
function fuckie5(){
var sum1=document.getElementById("informationPrice").value;
var sum2=document.getElementById("equipmentPrice").value;
var sum3=document.getElementById("testPrice").value;
var sum4=document.getElementById("expensePrice").value;
var sum5=document.getElementById("meetingPrice").value;
var sum6=document.getElementById("servicePrice").value;
var sum7=document.getElementById("advisoryPrice").value;
var sum8=document.getElementById("otherPrice").value;
var sum9=Number(sum1)+Number(sum2)+Number(sum3)+Number(sum4)+Number(sum5)+Number(sum6)+Number(sum7)+Number(sum8);
document.getElementById("totalPrice").value=sum9;
}
如图
合计计算结果 出现问题。合计是前边几项的和。我看又说用new number 他们什么区别呢? 展开
var sum1=document.getElementById("informationPrice").value;
var sum2=document.getElementById("equipmentPrice").value;
var sum3=document.getElementById("testPrice").value;
var sum4=document.getElementById("expensePrice").value;
var sum5=document.getElementById("meetingPrice").value;
var sum6=document.getElementById("servicePrice").value;
var sum7=document.getElementById("advisoryPrice").value;
var sum8=document.getElementById("otherPrice").value;
var sum9=Number(sum1)+Number(sum2)+Number(sum3)+Number(sum4)+Number(sum5)+Number(sum6)+Number(sum7)+Number(sum8);
document.getElementById("totalPrice").value=sum9;
}
如图
合计计算结果 出现问题。合计是前边几项的和。我看又说用new number 他们什么区别呢? 展开
1个回答
展开全部
JavaScript小数在做四则运算时,精度会丢失
那么你需要写个函数来处理这个情况,比如下面几个有用的函数:
//说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
//调用:accAdd(arg1,arg2)
//返回值:arg1加上arg2的精确结果
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方法,调用起来更加方便。
Number.prototype.add = function(arg) {
return accAdd(arg, this);
}
//说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
//调用:accAdd(arg1,arg2)
//返回值:arg1加上arg2的精确结果
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方法,调用起来更加方便。
Number.prototype.add = function(arg) {
return accAdd(arg, this);
}
减法
Js代码
[code]
//说明:javascript的减法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的减法结果。
//调用:accSub(arg1,arg2)
//返回值:arg1减上arg2的精确结果
function accSub(arg1, arg2) {
return accAdd(arg1, -arg2);
}
//给Number类型增加一个sub方法,调用起来更加方便。
Number.prototype.sub = function(arg) {
return accSub(this, arg);
}
//说明:javascript的减法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的减法结果。
//调用:accSub(arg1,arg2)
//返回值:arg1减上arg2的精确结果
function accSub(arg1, arg2) {
return accAdd(arg1, -arg2);
}
那么你需要写个函数来处理这个情况,比如下面几个有用的函数:
//说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
//调用:accAdd(arg1,arg2)
//返回值:arg1加上arg2的精确结果
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方法,调用起来更加方便。
Number.prototype.add = function(arg) {
return accAdd(arg, this);
}
//说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
//调用:accAdd(arg1,arg2)
//返回值:arg1加上arg2的精确结果
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方法,调用起来更加方便。
Number.prototype.add = function(arg) {
return accAdd(arg, this);
}
减法
Js代码
[code]
//说明:javascript的减法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的减法结果。
//调用:accSub(arg1,arg2)
//返回值:arg1减上arg2的精确结果
function accSub(arg1, arg2) {
return accAdd(arg1, -arg2);
}
//给Number类型增加一个sub方法,调用起来更加方便。
Number.prototype.sub = function(arg) {
return accSub(this, arg);
}
//说明:javascript的减法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的减法结果。
//调用:accSub(arg1,arg2)
//返回值:arg1减上arg2的精确结果
function accSub(arg1, arg2) {
return accAdd(arg1, -arg2);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询