本当にただのメモ

なるべく Qiita に投稿しよう

精度を保てる数字の最大値

対象 最大値 備考
64bit Perl 18446744073709551615 2 の 64 乗 - 1
JavaScript 9007199254740991 JS には整数型がなく全て浮動小数点型で表現されるため
MySQL INT 2147483647
MySQL INT (unsigned) 4294967295 2 の 32 乗 - 1
MySQL BIGINT 9223372036854775807
MySQL BIGINT (unsigned) 18446744073709551615 2 の 64 乗 - 1

ちなみに

  • MySQL の UUID_SHORT() の戻り値は 64 ビットの符号なし整数。つまり UNSIGNED BIGINT でないと入らない。
  • sprintf の %d符号付き なので sprintf "%d", 18446744073709551615 は桁溢れする ( -1 と返ってくる)
    • 符号なしが良いなら %u を使う

Perl プログラムの中で数値型はどう扱うべきか

参考