Math.round在我的网页上没有做任何事情

时间:2014-05-22 16:25:57

标签: javascript

这是我的页面: 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

截图:

Screenshot showing the problem (the number not being rounded and the console showing the output

4 个答案:

答案 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])
}