这是我的页面: http://dl.dropboxusercontent.com/s/3kc058darzus1uu/pythagoras_questions.html
它应该是我为一些学生提供辅导的修订网站,但是我在修补一个数字到2 dp时遇到了一些麻烦,我不确定为什么。我已经写过99到107行:
function answers() {
c = Math.sqrt(a*a+b*b)
console.log(c)
Math.round(c*100)/100
console.log(c)
var el = document.getElementById("c")
el.innerHTML="$"+c+"$"
MathJax.Hub.Queue(["Typeset", MathJax.Hub, el])
}
但由于某种原因,它会跳过Math.round()函数。这是控制台的示例输出:
46.32493928760188
46.32493928760188
我只是不明白为什么它没有四舍五入,我做错了什么?奇怪的是打字
Math.round(c*100)/100
直接进入控制台,提供:46.32
。
截图:
答案 0 :(得分:5)
您必须再次将Math.round(c * 100) / 100
的结果(返回值)分配给变量c
。
并且总是使用分号来分隔JavaScript语句,这样当两个语句出现在同一行时(例如,当你缩小js时)就不会出错。
function answers() {
var c = Math.sqrt(a * a + b * b);
c = Math.round(c * 100) / 100;
var el = document.getElementById("c");
el.innerHTML = "$" + c + "$";
MathJax.Hub.Queue(["Typeset", MathJax.Hub, el]);
}
答案 1 :(得分:4)
你需要:
c = Math.round(c*100)/100;
实际上,您的函数不会更新c
,也不会将其结果写入任何变量。
答案 2 :(得分:3)
您需要将Math.round
的结果分配给变量,例如
c = Math.round(c*100)/100;
答案 3 :(得分:0)
为什么要制作多套
当你可以
时function answers() {
c = Math.round(Math.sqrt(a*a+b*b)*100)/100
console.log(c)
var el = document.getElementById("c")
el.innerHTML="$"+c+"$"
MathJax.Hub.Queue(["Typeset", MathJax.Hub, el])
}
编辑:
另一种选择
如果数字已经是浮点数,则为.toFixed()选项
function answers() {
c = Math.sqrt(a*a+b*b).toFixed(2)
console.log(c)
var el = document.getElementById("c")
el.innerHTML="$"+c+"$"
MathJax.Hub.Queue(["Typeset", MathJax.Hub, el])
}