我正在尝试创建一个页面以四舍五入一个十进制数,四舍五入一个偶数。因此,我在检查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
答案 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);
}