JSONの数値型の大きさには限界はないという話

Pocket

JSONの数値はNumberとして定義されている。
Numberは8進数や16進数を扱えない。そしてその最大値はJSONの仕様に定義されていない。
JSONの紹介 より

つまりテキストとして保存されるJSONデータは

9e9999999999....

このように桁数を長くすればいくらでも大きい数字を表すことが出来る。

しかしプログラムで数値として扱うときには型の制約が出てくるので、注意が必要だ。

一例を言えば、jqで扱える数値の最大はdouble(倍精度型)と同じ1.7976931348623157e+308だ。


echo '1.7976931348623158e+308' | jq .
1.7976931348623157e+308

それよりも大きな値を与えても1.7976931348623157e+308になってしまう。


echo '2e+308' | jq .
1.7976931348623157e+308

JSONフォーマットで保存するときは数値の大きさにJSONにおける制約はないが、
数値として扱い計算などに使うためには一定の範囲で値を制限する必要がある。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です