Math.round不起作用 - 其他答案没有帮助

时间:2017-07-26 22:31:36

标签: javascript

尝试编辑提供两位小数的现有(工作,显示的第一个)脚本,以便它只提供舍入的数字 - 我的编辑显示第二个(例如here)。要清楚我想要简单的整数,即18不是18.00。

function D(r){
    if (r.stat === "ok") {
        for (var k in r.items) {
            document.write(r.items[k].inventory)
        }
    }
}

function D(r){
    if (r.stat === "ok") {
        for (var k in r.items) {
            document.write(r.items[k].inventory)
            Math.round()
        }
     }
}

3 个答案:

答案 0 :(得分:3)

您可以尝试使用以下方法之一根据您的要求执行此操作:

  • <强> Math.floor()

    intvalue = Math.floor( floatvalue );

  • <强> Math.ceil()

    intvalue = Math.ceil( floatvalue );

  • <强> Math.round()

    intvalue = Math.round( floatvalue );

示例:

value = 3.65

Math.ceil(value); // 4

Math.floor(value); // 3

Math.round(value); // 4

在您的函数中:

您应该将参数传递给方法math.round以按预期工作:

Math.round(r.items[k].inventory);

答案 1 :(得分:1)

Math.round工作正常。把你想要的东西放在括号()之间。

&#13;
&#13;
let foo = {
  stat: "ok",
  items: {
    apple: {
      inventory: 18.45
    }
  }
}

function D(r) {
  if (r.stat === "ok") {
    for (var k in r.items) {
      console.log(Math.round(r.items[k].inventory))
    }
  }
}

D(foo);
&#13;
&#13;
&#13;

答案 2 :(得分:0)

舍入数字。

有很多方法可以对每个数字进行四舍五入。

到最接近的整数

通常你会四舍五入到最接近的整数

Math.round(9.4) == 9; // is true
Math.round(9.6) == 10; // is true

Math.round(-9.4) == -9; // is true
Math.round(-9.6) == -10; // is true

中途点向上

如果您正在向中途走向无限

Math.round(9.5) == 10; // is true
Math.round(-9.5) == 9; // is true

舍入到最近的偶数

 Math.round(8.5) == 9; // is true
 Math.round(-7.5) == -7; // is true

中途点远离零

如果你想要使中间点远离0,你可以使用

 9.5.toFixed() == 10; // is true
-9.5.toFixed() == -10; // is true

注意结果是一个字符串,所以如果你想要一个数字转换如下

Number( 9.5.toFixed()) === 10; // is true
Number(-9.5.toFixed()) === -10; // is true

中途点甚至

如果您希望舍入到最近,即使您必须创建一个函数

const roundEven = (val) => {
    if (Math.abs(val % 1) === 0.5) {
        return (val = Math.round(val), val - (val % 2) * Math.sign(val));
    }
    return Math.round(val);
}


roundEven(9.5) === 10; // is true
roundEven(-9.5) === -10; // is true
roundEven(8.5) === 8; // is true
roundEven(-8.5) === -8; // is true

实施例

show("Math.round(9.4) === " + Math.round(9.4))
show("Math.round(9.6) === " + Math.round(9.6))

show("Math.round(-9.4) === " + Math.round(-9.4))
show("Math.round(-9.6) === " + Math.round(-9.6))

show("Math.round(9.5) === " + Math.round(9.5) )
show("Math.round(-9.5) === " + Math.round(-9.5) )


show("Math.round(8.5) === " + Math.round(8.5) )
show("Math.round(-7.5) === " + Math.round(-7.5) )

show(" 9.5.toFixed() === '" + 9.5.toFixed() + "'" )
show("-9.5.toFixed() === '" + -9.5.toFixed() + "'" )
   
show("Number( 9.5.toFixed()) === " + Number(9.5.toFixed()))
show("Number(-9.5.toFixed()) === " + Number(-9.5.toFixed()))


const roundEven = (val) => {
if (Math.abs(val % 1) === 0.5) {
    return (val = Math.round(val), val - (val % 2) * Math.sign(val));
}
return Math.round(val);
}

show("roundEven(9.5) === " + roundEven(9.5))
show("roundEven(-9.5) === " + roundEven(-9.5))
show("roundEven(8.5) === " + roundEven(8.5))
show("roundEven(-8.5) === " + roundEven(-8.5))
show("roundEven(0.5) === " + roundEven(0.5))
show("roundEven(-0.5) === " + roundEven(-0.5))



function show(text){
   const d = document.createElement("div");
   d.textContent = text;
   document.body.appendChild(d);
}