Difference between revisions of "Float/ja"

From Second Life Wiki
Jump to navigation Jump to search
(New page: {{Multi-lang}} {{LSL Header}} Category:LSL Types/ja 浮動小数点数データ型はIEEE-754形式の32ビット(単精度)の数値. 小数点付きの数値を使いたいときは...)
 
(5 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Multi-lang}}
{{Multi-lang}}
{{LSL Header}}
{{LSL Header/ja}}
[[Category:LSL Types/ja]]
[[Category:LSL Types/ja]]
浮動小数点数データ型はIEEE-754形式の32ビット(単精度)の数値.
浮動小数点数データ型はIEEE-754形式の32ビット(単精度)の数値です。
小数点付きの数値を使いたいときはfloat型を使用する.
小数点付きの数値を使いたいときはfloatを使用します。


表現できる範囲は1.175494351E-38 〜 3.402823466E+38.
表現できる範囲は1.175494351E-38 〜 3.402823466E+38です。


2.6E-5のような科学的表記で表現される.
2.6E-5のような科学的表記で表現することができます。


関数が引数としてfloat型を要求しているときに,数値が整数(例えば5)のときは,float型(例えば5.0)として生成されるように.0を付加する.
関数が引数としてfloatを要求しているときに、数値が整数(例えば5)ならば、float(例えば5.0)として生成されるように.0を付加します。


二つの定数どうしを除算する場合,float型として定義をしないと結果が丸められる.いっそのこと,電卓であらかじめ計算しておけば、サーバーの数サイクルを節約できる.
二つの定数を除算するなら、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 id="box">
== 関連項目 ==
== 関連項目 ==
<div style="padding: 0.5em">
<div style="padding: 0.5em">
'''Articles'''
'''用語'''
*LSL Examples: [[Format_Decimal|Format Decimal]]
*LSL Examples: [[Format_Decimal|Format Decimal]]


</div></div>
</div></div>

Revision as of 06:14, 25 February 2016

浮動小数点数データ型は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 )
      

関連項目

用語