4

Lua の優れた点の 1 つは、数値に double の代わりに float を使用できることです。luaconf.h の LUA_NUMBER。それは私にとって非常にうまく機能します!

しかし、私はいつも lua が整数をどのように扱うのか疑問に思っていました。js と as3 では、整数も単なる「数値」であることを知っています。これは、数値が常に仮数部 53 桁の double である場合に非常にうまく機能します。これは、人々が整数に期待する 32 ビットが十分にカバーされているためです。仮数部が 23 桁の浮動小数点数にすると、期待どおりに機能しなくなります。コードは、ビットごとの操作やパックされた 32 ビット色などのために、整数を 32 ビットとして扱うことがよくあります。

だから私の質問は、「#define LUA_NUMBER float」でビルドした場合、整数制限は 23 ビットですか? 答えはもっと複雑ですか?もしそうなら、なぜ、どのように?また、luajit を使用したことはありませんが、他の lua 実装はこれをどのように処理しますか?

コードを読むだけでよいことはわかっていますが、興味深い問題だと思います。そして、私は怠け者です:) 私のユースケースでは、23ビットを想定しても問題ありません。

4

1 に答える 1

2

はい、整数は数値のサイズに制限されています。したがって、浮動小数点数を使用すると、整数に対して 24 ビットが得られます (浮動小数点表現には隠しビットがあります)。

于 2013-06-18T15:07:16.543 に答える