如果数字为偶数,如何舍入,如果为奇数,如何舍入?

时间:2019-10-12 02:39:55

标签: javascript html

我正在尝试创建一个页面以四舍五入一个十进制数,四舍五入一个偶数。因此,我在检查5.8键入的第一个数字5时是否遇到十进制数是偶数还是奇数的问题。然后显示原始数字,并根据偶数或奇数显示调整后的数字(向上或向下取整)。与四舍五入的数字一样,例如4.8是5或7.2是7。

我尝试使用if语句使用原始数字%2 == 0,并且一直说0。

function roundIt() {
  // initializes variables
  var orgNum = 0,
    adjNum = 0,
    rounNum = 0;
  // prompts user to enter a number
  orgNum = parseFloat(prompt("Enter a number"));
  alert("Orginial Num: " + orgNum);
  // uses orginal number to then round up if odd and round down if even
  while (orgNum != -99) {
    // if statement to even (floor) and use odd (ceil)
    isEven(orgNum);
    rounNum = Math.round(orgNum);
    // display results	
    document.write("<p>Orginial Number: " + orgNum);
    document.write("<br>Adjusted Number: " + adjNum);
    document.write("<br>Rounded Number: " + rounNum + "</p>");

    // prompts user to enter a number
    orgNum = parseFloat(prompt("Enter a number"));
  }
}
// function to see if number is even or odd
function isEven(orgNum) {
  if ((orgNum % 2) == 0) {
    adjNum = Math.floor(orgNum);
    alert("Even Num: " + adjNum);
  } else {
    adjNum = Math.ceil(orgNum);
    alert("Odd Num: " + adjNum);
  }
}
<div class="container">
  <p><input type="button" class="button button2" value="Click to start" onclick="roundIt();" />
  </p>
</div>

我的结果应如下所示:

Original Number: 6.6
Adjusted number: 6
Rounded number: 7

Original Number: 5.8
Adjusted number: 5
Rounded number: 6

但是我明白了:

Orginial Number: 5.8
Adjusted Number: 0
Rounded Number: 6

Orginial Number: 6.6
Adjusted Number: 0
Rounded Number: 7

2 个答案:

答案 0 :(得分:1)

调整后的值似乎是parseInt(v*10, 10) % 2 == 0 ? Math.floor(v) : Math.ceil(v),的结果,但是您的示例数据太小了无法确定

function rounder(v) {
  return {
    original: v,
    adjusted: parseInt(v*10, 10) % 2 == 0 ? Math.floor(v) : Math.ceil(v),
    rounded: Math.round(v)
  }
}
console.log(JSON.stringify(rounder(6.6), null, 4));
console.log(JSON.stringify(rounder(5.8), null, 4));

答案 1 :(得分:0)

我可以想到一种效率相对较低的方法,但是应该可以有效地工作。整个互联网都会对我大喊大叫;-;

因此,您可以做的是让JavaScript以字符串形式读取浮点数,将句点后的所有内容都切掉,并只取一个数字。例如,在数字27.732中,它将去掉小数点和7之前的所有数字,然后检查该数字是1、3、5等还是0、2、4等这是我能想到的最简单的方法,它所要做的就是检查小数点前的最后一位数字是偶数还是奇数。

让我破解代码...

var number = 34.52;

String(number);

var x = number.split(".").trim();
if (len(x[0]) > 1) {
    var number2 = x[0].slice(len(x[0]) - 1);
} else {
    var number2 = x[0];
}

Number(number)
Number(number2)

if (number2 == 1 || number2 == 3 || number2 == 5 || number2 == 7 || number2 == 9) {
    Math.floor(number);
} else {
    Math.ceiling(number);
}