.NET和javascript之间的64位int差异

.NET和javascript之间的64位int差异,javascript,.net,Javascript,.net,我正在将一个长整型从C#(DateTime.Now().Ticks)传递到一个网页,然后为了并发性的缘故尝试将它传回 634290758865783994成为 634290758865783900 为什么会这样?我认为System.Long和Javascript数字都是64位整数。ECMAScript(Javascript的正式名称)将数字存储为 这些值只能用有效位表示高达2^53的值,高于此值的所有值都是近似值。您是否测试过转换发生的确切位置?我对这些信息知之甚少,因此不敢尝试回答。但如果我大

我正在将一个长整型从C#(DateTime.Now().Ticks)传递到一个网页,然后为了并发性的缘故尝试将它传回

634290758865783994成为 634290758865783900

为什么会这样?我认为System.Long和Javascript数字都是64位整数。

ECMAScript(Javascript的正式名称)将数字存储为


这些值只能用有效位表示高达2^53的值,高于此值的所有值都是近似值。

您是否测试过转换发生的确切位置?我对这些信息知之甚少,因此不敢尝试回答。但如果我大胆猜测的话,我会说这可能与以64位无符号整数开始的数字有关,并被转换为64位有符号浮点数。我认为javascript实际上没有整数。我会让聪明人来做真正的答案。你可能最终不得不把它作为字符串传递,这取决于你在Javascript端使用它的目的。你答案的第二部分不太正确。双精度浮点格式允许2^53个以上的值。我想你的意思是,“double”的尾数(分数部分)只有52位宽,因此只能表示有限数量的有效数字。我不是大数二进制表示的专家,所以你可能是对的。我来看看我是否可以将其重新格式化:)