Javascript 安全整数计数器,在达到最大安全整数时立即换行?
我想在我的程序中实现一个计数器,每次调用递增一个数字 尽管Javascript 安全整数计数器,在达到最大安全整数时立即换行?,javascript,Javascript,我想在我的程序中实现一个计数器,每次调用递增一个数字 尽管Number.MAX\u SAFE\u INTEGER是一个非常大的数字,但我不喜欢在程序中使用“定时炸弹”的想法 这是一个真正的问题,还是这个数字足够大,以至于当达到number.MAX\u SAFE\u INTEGER时,我不应该费心实现一个环绕的函数 function incrementWithWrapAround(n) { if(n === 9007199254740991) { // Number.MAX_SAFE_INTE
Number.MAX\u SAFE\u INTEGER
是一个非常大的数字,但我不喜欢在程序中使用“定时炸弹”的想法
这是一个真正的问题,还是这个数字足够大,以至于当达到number.MAX\u SAFE\u INTEGER
时,我不应该费心实现一个环绕的函数
function incrementWithWrapAround(n) {
if(n === 9007199254740991) { // Number.MAX_SAFE_INTEGER
return 0;
}
return ++n;
}
如果每秒勾选100万次,则需要285年以上的时间才能达到该值。@zerkms,但如果初始值为
9007199254740991-1
,则您的问题必须对初始状态进行一些澄清。顺便说一句,您当前的代码不会增加任何内容。PS:甚至是n+1
,因为它更清楚地表达了您的意图。@Me.Name之后它不会增加。这不是比较,而是精度问题。没有足够的位来表示可区分的数字,因此计数器基本上会保持相同的值。如果每秒勾选100万次,则需要285年以上的时间才能达到该值。@zerkms,但是如果初始值是9007199254740991-1
,那么您的问题必须对初始状态进行一些澄清。顺便说一句,您当前的代码不会增加任何内容。PS:甚至是n+1
,因为它更清楚地表达了您的意图。@Me.Name之后它不会增加。这不是比较,而是精度问题。没有足够的位来表示可区分的数字,因此计数器基本上会保持相同的值。