JavaScript:在 0.5 个案例中四舍五入
JavaScript: Rounding Down in .5 Cases
我处于 JavaScript 函数生成数字的情况,例如 2.5
。我想将这五个数字向下舍入为 2
,而不是 Math.round
的结果,在这种情况下它总是会向上舍入(忽略偶数奇数规则),产生 2。有没有比四舍五入前从数字中减去 0.01 更优雅的方法?谢谢。
这样做:
var result = (num - Math.Floor(num)) > 0.5 ? Math.Round(num):Math.Floor(num);
存在另一种方法,即使用实数(而不是 0.2 使用 20、0.02 使用 2 等),然后添加将除以结果的 floatingPoints 变量(在您的情况下为 2)。因此,您可以作为 Number/(10^floatingPoints) 进行操作。
该解决方案广泛应用于外汇公司。
只需取反 Math.round
:
的输入和输出
var result = -Math.round(-num);
更详细地说:JavaScript 的 Math.round
有一个不寻常的 属性,它将中途情况四舍五入到正无穷大,无论它们是正数还是负数。因此,例如 2.5
将四舍五入为 3.0
,但 -2.5
将四舍五入为 -2.0
。这是一种不常见的舍入模式:更常见的是将中途情况从零舍入(因此 -2.5
会舍入到 -3.0
),或者舍入到最接近的偶数。
然而,它确实有一个很好的 属性,那就是将它调整为将中途情况舍入到负无穷大是微不足道的:如果这就是你想要的,那么你所要做的就是否定输入和输出:
示例:
function RoundHalfDown(num) {
return -Math.round(-num);
}
document.write("1.5 rounds to ", RoundHalfDown(1.5), "<br>");
document.write("2.5 rounds to ", RoundHalfDown(2.5), "<br>");
document.write("2.4 rounds to ", RoundHalfDown(2.4), "<br>");
document.write("2.6 rounds to ", RoundHalfDown(2.6), "<br>");
document.write("-2.5 rounds to ", RoundHalfDown(-2.5), "<br>");
您也可以使用此函数进行舍入,不带小数部分和 .5 向下规则(仅限正数):
function customRound(number) {
var decimalPart = number % 1;
if (decimalPart === 0.5)
return number - decimalPart;
else
return Math.round(number);
}
对不起我的英语。
我处于 JavaScript 函数生成数字的情况,例如 2.5
。我想将这五个数字向下舍入为 2
,而不是 Math.round
的结果,在这种情况下它总是会向上舍入(忽略偶数奇数规则),产生 2。有没有比四舍五入前从数字中减去 0.01 更优雅的方法?谢谢。
这样做:
var result = (num - Math.Floor(num)) > 0.5 ? Math.Round(num):Math.Floor(num);
存在另一种方法,即使用实数(而不是 0.2 使用 20、0.02 使用 2 等),然后添加将除以结果的 floatingPoints 变量(在您的情况下为 2)。因此,您可以作为 Number/(10^floatingPoints) 进行操作。 该解决方案广泛应用于外汇公司。
只需取反 Math.round
:
var result = -Math.round(-num);
更详细地说:JavaScript 的 Math.round
有一个不寻常的 属性,它将中途情况四舍五入到正无穷大,无论它们是正数还是负数。因此,例如 2.5
将四舍五入为 3.0
,但 -2.5
将四舍五入为 -2.0
。这是一种不常见的舍入模式:更常见的是将中途情况从零舍入(因此 -2.5
会舍入到 -3.0
),或者舍入到最接近的偶数。
然而,它确实有一个很好的 属性,那就是将它调整为将中途情况舍入到负无穷大是微不足道的:如果这就是你想要的,那么你所要做的就是否定输入和输出:
示例:
function RoundHalfDown(num) {
return -Math.round(-num);
}
document.write("1.5 rounds to ", RoundHalfDown(1.5), "<br>");
document.write("2.5 rounds to ", RoundHalfDown(2.5), "<br>");
document.write("2.4 rounds to ", RoundHalfDown(2.4), "<br>");
document.write("2.6 rounds to ", RoundHalfDown(2.6), "<br>");
document.write("-2.5 rounds to ", RoundHalfDown(-2.5), "<br>");
您也可以使用此函数进行舍入,不带小数部分和 .5 向下规则(仅限正数):
function customRound(number) {
var decimalPart = number % 1;
if (decimalPart === 0.5)
return number - decimalPart;
else
return Math.round(number);
}
对不起我的英语。