asp中js加减判断

来源:百度知道 编辑:UC知道 时间:2024/09/25 10:25:36
var zhuyuan = parseFloat(form2("zhuyuan").value,10);
var cwf = parseFloat(form2("cwf").value,10);
var zcf = parseFloat(form2("zcf").value,10);
var hlf = parseFloat(form2("hlf").value,10);
var jcf = parseFloat(form2("jcf").value,10);
var tec = parseFloat(form2("tec").value,10);
var hyf = parseFloat(form2("hyf").value,10);
if (zhuyuan!=cwf+zcf+hlf+jcf+tec+hyf){
alert("对不起!");form2.zhuyuan.focus();return;
}
麻烦问下,所有变量都是小数的
比如 zhuyuan!=cwf+zcf cwf=10.1 zcf=10.1 zhuyuan=20.2 这样不会错
比如 zhuyuan!=cwf+zcf+hlf+jcf+tec+hyf cwf=10.1 zcf=10.1 hlf=10.1 jcf=10.1 tec=10.1 hyf=10.1 zhuyuan=60.6 但是却弹出对不起
如果是整数的话才会提交,输入小数就判断不出,为什么啊,在线等!
cwf+zcf+hlf+jcf+tec+hyf+zlf+xf+shoushu+xyaopin+zyaopin+tex+tiao+qtzifu 如果都填写10.1 alert(cwf+zcf+hlf+jcf+tec+hyf+zlf+xf+shoushu+xyaopin+zyaopin+tex+tiao+qtzifu) 结果是 141.39999999999998 郁闷啊,为什么会是这样的得数

那你再试下

你写的那个,我试了一下,没有问题的.看看你填写的数据.

刚才又试了一下,确实有这个问题,上网找了一下,javascrip确实有浮点型计算的这个问题。找到了个解决方法,你看看吧。
//浮点数相乘
function dcmMul(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);
}
//浮点数相加
function dcmAdd(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 (dcmMul(arg1,m)+dcmMul(arg2,m))/m;
}

function mysubmit(){
var cwf = parseFloat(form2("cwf").value,10);
var zcf = parseFloat(form2("zcf").value,10);
var hlf = parseFloat(form2("hlf").value,10);