Difference between revisions of "Category:LSL Float/ja"
Jump to navigation
Jump to search
Mako Nozaki (talk | contribs) (Redirected page to Category:LSL 浮動小数点数) |
m (Removed redirect to Category:LSL 浮動小数点数) Tag: Removed redirect |
||
Line 1: | Line 1: | ||
{{Multi-lang}} | |||
{{LSL Header/ja}} | |||
[[Category:LSL Types/ja]] | |||
浮動小数点数データ型はIEEE-754形式の32ビット(単精度)の数値です。 | |||
小数点付きの数値を使いたいときはfloatを使用します。 | |||
表現できる範囲は1.175494351E-38 〜 3.402823466E+38です。 | |||
2.6E-5のような科学的表記で表現することができます。 | |||
関数が引数としてfloatを要求しているときに、数値が整数(例えば5)ならば、float(例えば5.0)として生成されるように.0を付加します。 | |||
二つの定数を除算するなら、float型として定義をしないと結果が丸められるでしょう。いっそのこと、電卓であらかじめ計算しておくと、サーバーの数サイクルを節約します。 | |||
<div id="box"> | |||
== 例 == | |||
<div style="padding: 0.5em"> | |||
<source lang="lsl2">float min = 1.175494351E-38; | |||
float max = 3.402823466E+38; | |||
float sci = 2.6E-5; | |||
float sci_a = 2.6E+3; | |||
float sci_b = 2.6E3; | |||
float sci_c = 26000.E-1; | |||
float f = 2600; //floatへの暗黙の型変換 | |||
float E = 85.34859; | |||
float Infintity = (float)"inf"; //-- LSOで評価されるなら、算術エラーを起こし、おそらく使えないでしょう。下の"警告"を見てください。 | |||
float NotANumber = (float)"nan"; //-- LSOで評価されるなら、算術エラーを起こし、おそらく使えないでしょう。下の"警告"を見てください。 | |||
</source> | |||
</div></div> | |||
<div id="box"> | |||
== 便利なスニペット == | |||
<div style="padding: 0.5em"> | |||
制限なしで、任意のfloatが有効かどうかを得たいなら、以下の関数は理想的です。 | |||
<source lang="lsl2">integer isValidFloat(string s) { return (string)((float)s) != (string)((float)("-" + llStringTrim(s, STRING_TRIM_HEAD))); }</source> | |||
次のものはより効率的ですが、有名な注意点があります。これらが問題でない場合、特にMonoにおいて、お勧めの選択肢です。 | |||
<lsl>integer isValidFloat(string s) { return (float)(s + "1") != 0.0; }</source> | |||
'''警告''': | |||
* LSO-LSLの科学的表記では、指数部を38より大きくできません(算術エラーを投げます)。Monoは<code>infinity</code>をサポートしており、影響を受けません。 | |||
* MonoとLSO-LSLの両方において、小数点以下第9位以降を含む文字列を扱っているとき、おかしな結果を見かけるかもしれません。LSLでのstringへのキャストでは小数点以下6桁まで丸められ、人間の手による入力はあまり正確でなくなり、そして、通常、あまりに小さい値はそんなに役に立たないということを思い出してください。 | |||
* "nan"、"inf"とそれらの負の値は、stringからキャストできる、特別なテキスト値です(どんな先頭の空白や末尾の文字でも)。変数がLSOで評価されるとき、それらの値は算術エラーを引き起こすでしょう。stringからfloatへのキャストによってユーザーデータを調べるなら、以下のコード(vStrDtaはあなたの変数名に置き換えてください)と[https://jira.secondlife.com/browse/SVC-6847 SVC-6847]を見てください。 | |||
** <source lang="lsl2">(float)llList2String( llParseStringKeepNulls( llToLower( llStringTrim( vStrDta, STRING_TRIM ) ), ["inf", "nan"], [] ), 0 )</source> | |||
</div></div> | |||
<div id="box"> | |||
== 関連項目 == | |||
<div style="padding: 0.5em"> | |||
'''用語''' | |||
*LSL Examples: [[Format_Decimal|Format Decimal]] | |||
</div></div> |
Revision as of 09:32, 26 September 2023
LSL ポータル | 関数 | イベント | 型 | 演算子 | 定数 | 実行制御 | スクリプトライブラリ | カテゴリ別スクリプトライブラリ | チュートリアル |
浮動小数点数データ型はIEEE-754形式の32ビット(単精度)の数値です。 小数点付きの数値を使いたいときはfloatを使用します。
表現できる範囲は1.175494351E-38 〜 3.402823466E+38です。
2.6E-5のような科学的表記で表現することができます。
関数が引数としてfloatを要求しているときに、数値が整数(例えば5)ならば、float(例えば5.0)として生成されるように.0を付加します。
二つの定数を除算するなら、float型として定義をしないと結果が丸められるでしょう。いっそのこと、電卓であらかじめ計算しておくと、サーバーの数サイクルを節約します。
例
float min = 1.175494351E-38;
float max = 3.402823466E+38;
float sci = 2.6E-5;
float sci_a = 2.6E+3;
float sci_b = 2.6E3;
float sci_c = 26000.E-1;
float f = 2600; //floatへの暗黙の型変換
float E = 85.34859;
float Infintity = (float)"inf"; //-- LSOで評価されるなら、算術エラーを起こし、おそらく使えないでしょう。下の"警告"を見てください。
float NotANumber = (float)"nan"; //-- LSOで評価されるなら、算術エラーを起こし、おそらく使えないでしょう。下の"警告"を見てください。
便利なスニペット
制限なしで、任意のfloatが有効かどうかを得たいなら、以下の関数は理想的です。
integer isValidFloat(string s) { return (string)((float)s) != (string)((float)("-" + llStringTrim(s, STRING_TRIM_HEAD))); }
次のものはより効率的ですが、有名な注意点があります。これらが問題でない場合、特にMonoにおいて、お勧めの選択肢です。 <lsl>integer isValidFloat(string s) { return (float)(s + "1") != 0.0; }</source> 警告:
- LSO-LSLの科学的表記では、指数部を38より大きくできません(算術エラーを投げます)。Monoは
infinity
をサポートしており、影響を受けません。 - MonoとLSO-LSLの両方において、小数点以下第9位以降を含む文字列を扱っているとき、おかしな結果を見かけるかもしれません。LSLでのstringへのキャストでは小数点以下6桁まで丸められ、人間の手による入力はあまり正確でなくなり、そして、通常、あまりに小さい値はそんなに役に立たないということを思い出してください。
- "nan"、"inf"とそれらの負の値は、stringからキャストできる、特別なテキスト値です(どんな先頭の空白や末尾の文字でも)。変数がLSOで評価されるとき、それらの値は算術エラーを引き起こすでしょう。stringからfloatへのキャストによってユーザーデータを調べるなら、以下のコード(vStrDtaはあなたの変数名に置き換えてください)とSVC-6847を見てください。
(float)llList2String( llParseStringKeepNulls( llToLower( llStringTrim( vStrDta, STRING_TRIM ) ), ["inf", "nan"], [] ), 0 )
関連項目
用語
- LSL Examples: Format Decimal
Pages in category "LSL Float/ja"
The following 6 pages are in this category, out of 6 total.