参考这篇文章: math-round-vs-hack
我们优化了数学函数。
我们使用(num+0.5)|0
而不是Math.round()
.
但是有一个问题让人困惑,当 num > 2147483647 时,会得出错误的结果。
function round(n) {
return (n + 0.5) | 0;
};
round(2147483648)
将返回 -2147483648
根据维基百科:
2147483647 在计算
数字 2,147,483,647 也是 >computing 中 32 位有符号整数的最大值。因此,它是在流行的 CPU 上运行的许多编程语言中声明为 int 的变量的最大值,也是许多视频游戏的最大可能分数(或金额)。数字的出现通常反映了错误、溢出情况或缺失值。 [8] 同样,“(214) 748-3647”是表示为美国电话号码的数字序列,是网页上列出的最常见的电话号码。 [9] 用于 Unix 等操作系统的数据类型 time_t 是一个 32 位有符号整数 > 计算自 Unix 纪元开始以来的秒数(1970 年 1 月的午夜 UTC)。 [10] 可以用这种方式表示的最晚时间是>星期二 03:14:07 UTC,
我该如何处理这种情况以确保良好的性能?