[英]How Close is the Javascript Math.Round to the C# Math.Round?
通过阅读Stackoverflow问题 ,我知道编译器将查看您的号码,确定中点是偶数还是奇数,然后返回偶数。 示例数字是2.5,其四舍五入到3.我已经尝试了我自己的小实验来看看会发生什么,但我还没有找到任何关于此的规范,或者即使它在浏览器之间是一致的。
这是一个使用jQuery进行显示的示例JavaScript代码段:
$(document).ready(function() {
$("#answer").html(showRounding());
});
function showRounding() {
var answer = Math.round(2.5);
return answer;
}
这返回'3'。
我想知道的是:JavaScript与C#等效的四舍五入有多接近? 我这样做的原因是因为我想采用一种使用Math.Round
的JavaScript方法并将相同的方法重写为C#,并希望知道在舍入数字后我能得到相同的结果。
这是Math.round(x)
的完整javascript规范 :
15.8.2.15 round(x)返回最接近x并且等于数学整数的Number值。 如果两个整数Number值同样接近x,则结果是Number值更接近+∞。 如果x已经是整数,则结果为x。
- 如果x是NaN,则结果为NaN。
- 如果x为+0,则结果为+0。
- 如果x是-0,则结果为-0。
- 如果x是+∞,则结果为+∞。
- 如果x是-∞,则结果为-∞。
- 如果x大于0但小于0.5,则结果为+0。
- 如果x小于0但大于或等于-0.5,则结果为-0。
注1:Math.round(3.5)返回4,但Math.round(-3.5)返回-3。
注2:Math.round(x)的值与Math.floor(x + 0.5)的值相同,除非x是-0或小于0但大于或等于-0.5; 对于这些情况,Math.round(x)返回-0,但Math.floor(x + 0.5)返回+0。
C#语言规范没有规定任何特定的舍入算法。 我们最接近的是.NET的Math.Round
文档。 从那里,您可以看到一些javascript案例不适用( Math.Round
只处理小数和双精度,而不是无穷大),并且方法的重载使您可以更好地控制结果 - 您可以指定数量结果中的小数位数和中点舍入方法。 默认情况下, Math.Round
使用'银行家舍入'(甚至)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.