这两段代码:(1)var a = eval(form.a.value);
var b = eval(form.b.value);
var c = (Math.log(b))/(Math.log(a))
var d = Math.round(1000000*c)/1000000
form.z.value = d
(2)var a=10;
var b = eval(form.b.value);
var c = (Math.log(b))/(Math.log(a))
var d = Math.round(1000000*c)/1000000
form.z.value = d
第二段代码把底数固定为10,计算结果有时会不一样(两段代码都以10为底)。比如当b=25时两者结果一致为1.9794,当b=15(a=10)其结果(1)为1.176091(2)的结果是1。1760909999999999。
var b = eval(form.b.value);
var c = (Math.log(b))/(Math.log(a))
var d = Math.round(1000000*c)/1000000
form.z.value = d
(2)var a=10;
var b = eval(form.b.value);
var c = (Math.log(b))/(Math.log(a))
var d = Math.round(1000000*c)/1000000
form.z.value = d
第二段代码把底数固定为10,计算结果有时会不一样(两段代码都以10为底)。比如当b=25时两者结果一致为1.9794,当b=15(a=10)其结果(1)为1.176091(2)的结果是1。1760909999999999。
d应该不会吧 不是round了吗
1.1760912590556811IE/FF一样
任意底数代码(1)的计算结果比较准确,我希望的是底数为10代码(2)计算结果一致
上面2个貌似只有很小很小的差别啊 可以忽视的差别而且你要精确的话a=eval(....) 这个不好
你应该写 a=paseInt(....)
我暂时想了个办法,就是round后,限定小数位数
就像楼上说的,差别很小,其实就是小数点后9999太多一下6位一下那么多位的。
所以我暂时设置把所有结果都限定小数位数。
欢迎大家提供更好更彻底的方法...