在Javascript中将Number转换为String时是否有错误?

jam*_* li 2 javascript numbers

当我在Javascript中将大数字转换为字符串时,会发生这种情况,它似乎给了我一个我不期望的结果:

var x = 1234567890123456;

console.log(x)// 1234567890123456 --equal ...

console.log(x.toString())// 1234567890123456 --equal ...

var x = 12345678901234567;

console.log(x)// 12345678901234568 - 不同!

console.log(x.toString())// 12345678901234568 - 不同!

var x = 123456789012345678;

console.log(x)// 123456789012345680 - 不同!

console.log(x.toString())// 123456789012345680 - 不同!

console.log(x +"")// 123456789012345680 - 不同!

任何人都可以告诉我这个的原因,以及如何处理它?

sce*_*sor 5

原因是javascript(+/- 9007199254740992)中的数字最大而不会丢失精度.另见这个问题.