2

浮動小数点数 0000000000000000E+00 (本質的にゼロ) を含む JSON の一部に問題があります。たとえば、次のように考えてください。

{
    "a": 3199999999999999E+01,
    "b": 0000000000000000E+00,
    "c": 0,
    "d": 5
}

次の状況では、ゼロの浮動小数点数によってエラーが発生します。

  • JSONLint を介して実行する (http://jsonlint.com/)
  • jQuery.parseJSON (IE および Firefox、さまざまなバージョンの jQuery

ゼロの浮動小数点数をゼロ以外の値に変更しても、問題はありません。

次の JSFiddle も見てください: http://jsfiddle.net/Gr6fq/。これを Linux で実行すると、動作します。Windows では、エラーが発生します。

4

1 に答える 1

6

Javascript パーサーは、左端の先行ゼロを8 進数修飾子として解釈し、現在のトークンを 8 進数として解析するように見えます。Eその後、トークンで窒息します。

Firefox 5.0 のコンソールを使用する場合:

0E+00   // Okay, parsed as 0.
00E+00  // Syntax error, identifier starts immediately after numeric literal.
于 2011-07-15T11:21:26.980 に答える