Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 提交值至小数点后2位_Javascript - Fatal编程技术网

Javascript 提交值至小数点后2位

Javascript 提交值至小数点后2位,javascript,Javascript,我的脚本中的所有内容都非常完美,除了我最后的“if”语句,它无法执行,我无法用我的生命来理解它!我知道我在某个地方出错了,但就是不知道为什么,我是JavaScript新手 以下是我在最后一句话中试图实现的目标:- 如果“AgeGrade”变量与“Expression”变量匹配,则接受该值并将输入的值更改为2个小数点。例如,如果输入5.999,则更改为5.99 代码如下:- function agegrade() { var AgeGrade = document.submitrunne

我的脚本中的所有内容都非常完美,除了我最后的“if”语句,它无法执行,我无法用我的生命来理解它!我知道我在某个地方出错了,但就是不知道为什么,我是JavaScript新手

以下是我在最后一句话中试图实现的目标:-

如果“AgeGrade”变量与“Expression”变量匹配,则接受该值并将输入的值更改为2个小数点。例如,如果输入5.999,则更改为5.99

代码如下:-

function agegrade() {

    var AgeGrade = document.submitrunnertime.AgeGrade.value;
    var expression = /^[0-9]*\.?[0-9]*$/

    if (AgeGrade == null || AgeGrade == "") {
        document.submitrunnertime.AgeGrade.value = "-1";
        return true;
    } else if (AgeGrade != document.submitrunnertime.AgeGrade.value.match(expression)) {
        alert("Error - Need a number!");
        return false;
    } else if (AgeGrade == document.submitrunnertime.AgeGrade.value.match(expression)) {
        document.submitrunnertime.AgeGrade.value = AgeGrade.toFixed(2);
        return true;
    } else
        return false;
}

任何帮助都将不胜感激。

您可以试试这个。我在许多Javascript中都使用了它来进行舍入

document.submitrunnertime.AgeGrade.value = Math.round(AgeGrade * 100) / 100;

最后一个
if
语句可能会失败,并出现如下错误:
AgeGrade.toFixed不是函数

你怎么能解决这个问题

您使用的
.value()
方法返回一个字符串。但是,方法
.toFixed(
)仅适用于数字()。在调用它之前,请尝试将
AgeGrade
转换为float:

document.submitrunnertime.AgeGrade.value = parseFloat(AgeGrade).toFixed(2);

执行哪条路径?您应该将正则表达式更改为/^[0-9]*(\.[0-9]*)?$/根据他的问题,问题的可能重复之处在于
if
语句,而不是四舍五入。感谢您的输入。虽然这让我现在可以提交一个值,但它是将数字四舍五入,而不是将数字精确地去除到小数点后2位-有什么想法吗?如前所述,请看看这个答案:在您的特定情况下,它转换为:
Math.floor(parseFloat(AgeGrade)*100)/100