一个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 他们什么区别呢?
展开
 我来答
helen5106
推荐于2016-08-13 · TA获得超过1260个赞
知道小有建树答主
回答量:2015
采纳率:0%
帮助的人:1064万
展开全部
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);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式