Difference between revisions of "Category:LSL Integer/ja"

From Second Life Wiki
Jump to navigation Jump to search
m
m (update)
 
Line 19: Line 19:
以下のものはintegerではなく、[[float/ja|float]]を使います。
以下のものはintegerではなく、[[float/ja|float]]を使います。
<source lang="lsl2">
<source lang="lsl2">
integer firstInt = 125.2; //integerは小数点を含むことはできません。
integer firstInt = 125.2; //エラー integerは小数点を含むことはできません。
integer secondInt = 10000000000; //integerは2,147,483,647より大きな数値を扱うことはできません。
integer bigValue = 3147483647; // -1,147,483,649 と表示される integerは2,147,483,647をより大きな数値を扱うことはできません。
integer secondInt = 10000000000; // -1と表示される integerは2,147,483,647より大きな数値を扱うことはできません。
</source>
</source>
以下の関数は、文字列が整数のみで構成されているかどうかを判定するために使用できます。これは、チャットやテキストボックスに有効な整数が入力されたかどうかを知る必要がある場合に重要です。
<source lang="lsl2">
integer IsInteger(string var)
{
    integer i;
    for (i=0;i<llStringLength(var);++i)
    {
        if(!~llListFindList(["1","2","3","4","5","6","7","8","9","0"],[llGetSubString(var,i,i)]))
        {
            return FALSE;
        }
    }
    return TRUE;
}</source>
「こちらは、正または負の10進整数を含む文字列用のよりシンプルな解決策です(+記号、先頭のゼロ、または千の区切り ',' なしで表現された-2147483648から2147483647までの値) Omei Qunhua.
<source lang="lsl2">
    if ( (string) ( (integer) data) == data)
        llOwnerSay("'" + data + "' contains a valid integer");
</source>
以下の例は、文字列が文字0から9までしか含まないことを検証します。 Omei Qunhua.
a) 文字列の長さが5の例
<source lang="lsl2">
    StringOf5Dec(string test)
    {
        return ( (integer) ("1" + test) >= 100000);
    }
</source>
b) 文字列の長さが1から9までの例
<source lang="lsl2">
    VarStringIsDecimal(string test)
    {
        integer limit = (integer) llPow(10.0, llStringLength(test) );
        return ( (integer) ("1" + test) >= limit);
    }
</source>
この関数は、符号や先頭のゼロの有無にかかわらず、先頭/末尾のスペースを含むが、千の区切り記号は受け付けない任意の10進整数を検証するはずです。(Phil Metalhead)
<source lang="lsl2">
    integer uIsInteger(string input)
    {
        input = llStringTrim(input,STRING_TRIM); // remove leading/trailing whitespace
        // "+123" is a valid integer string but would otherwise fail, so strip leading "+" if it's there
        if (llGetSubString(input,0,0) == "+") input = llGetSubString(input,1,-1);
        return ((string)((integer)input) == input);
    }
</source>
上記の関数のテストケース(ページの右側にある「Expand」リンクをクリックしてください):
<source lang="lsl2" class="mw-collapsible mw-collapsed">
///////////////
// Returns 1 // (leading and trailing whitespace)
  2352316
///////////////
// Returns 1 // (leading "+")
+151613662
///////////////
// Returns 1 // (negative number)
-263163626
///////////////
// Returns 1 // (largest positive integer)
2147483647
///////////////
// Returns 1 // (largest negative integer)
-2147483648
///////////////
// Returns 1 // (largest positive integer with leading and trailing whitespace, and leading "+")
  +2147483647
///////////////
// Returns 0 // (contains letters)
161362stuff
///////////////
// Returns 0 // (number is a float, not an integer -- contains "." in string)
123.4
///////////////
// Returns 0 // (whitespace in middle of string)
2347
9089
///////////////
// Returns 0 // (contains thousands separator ",")
844,241
// Returns 0 // ("+" in middle of string)
2378+87668
///////////////
// Returns 0 // ("-" in middle of string)
3462098-12
// Returns 0 // (number > 2147483647)
2147483648
///////////////
// Returns 0 // (number < -2147483648)
-2147483649
///////////////
</source>
==Further Reading==
整数のさまざまな使用方法、特にLSL(Linden Scripting Language)での使用方法を含む、より広範なカバレッジについては、次を参照してください。 [[LSL_101/LSL_in_Focus:_Integers|LSL in Focus: Integers]].

Latest revision as of 12:28, 3 October 2023

Integers

integerデータ型は−2,147,483,648 〜 +2,147,483,647 (16進数で0x00000000 〜 0xFFFFFFFF)の範囲の符号付きの32ビットの値です。integerは整数の数値です。小数点が必要な場合は, floatを使用します。

DEBUG_CHANNELはintegerの最大値の定数として使用することができます。

以下は全てintegerです。

integer firstInt = 5512623;
integer secondInt = ACTIVE;
integer thridInt = 0x61EC1A;
integer fourthInt = -160693;

以下のものはintegerではなく、floatを使います。

integer firstInt = 125.2; //エラー integerは小数点を含むことはできません。
integer bigValue = 3147483647; // -1,147,483,649 と表示される integerは2,147,483,647をより大きな数値を扱うことはできません。
integer secondInt = 10000000000; // -1と表示される integerは2,147,483,647より大きな数値を扱うことはできません。

以下の関数は、文字列が整数のみで構成されているかどうかを判定するために使用できます。これは、チャットやテキストボックスに有効な整数が入力されたかどうかを知る必要がある場合に重要です。

integer IsInteger(string var)
{
    integer i;
    for (i=0;i<llStringLength(var);++i)
    {
        if(!~llListFindList(["1","2","3","4","5","6","7","8","9","0"],[llGetSubString(var,i,i)]))
        {
            return FALSE;
        }
    }
    return TRUE;
}

「こちらは、正または負の10進整数を含む文字列用のよりシンプルな解決策です(+記号、先頭のゼロ、または千の区切り ',' なしで表現された-2147483648から2147483647までの値) Omei Qunhua.

    if ( (string) ( (integer) data) == data)
        llOwnerSay("'" + data + "' contains a valid integer");

以下の例は、文字列が文字0から9までしか含まないことを検証します。 Omei Qunhua.

a) 文字列の長さが5の例

    StringOf5Dec(string test)
    {
        return ( (integer) ("1" + test) >= 100000);
    }

b) 文字列の長さが1から9までの例

    VarStringIsDecimal(string test)
    {
        integer limit = (integer) llPow(10.0, llStringLength(test) );
        return ( (integer) ("1" + test) >= limit);
    }

この関数は、符号や先頭のゼロの有無にかかわらず、先頭/末尾のスペースを含むが、千の区切り記号は受け付けない任意の10進整数を検証するはずです。(Phil Metalhead)

    integer uIsInteger(string input)
    {
        input = llStringTrim(input,STRING_TRIM); // remove leading/trailing whitespace
        // "+123" is a valid integer string but would otherwise fail, so strip leading "+" if it's there
        if (llGetSubString(input,0,0) == "+") input = llGetSubString(input,1,-1);
        return ((string)((integer)input) == input);
    }

上記の関数のテストケース(ページの右側にある「Expand」リンクをクリックしてください):

///////////////
// Returns 1 // (leading and trailing whitespace)
   2352316

///////////////
// Returns 1 // (leading "+")
+151613662
///////////////
// Returns 1 // (negative number)
-263163626
///////////////
// Returns 1 // (largest positive integer)
2147483647
///////////////
// Returns 1 // (largest negative integer) 
-2147483648
///////////////
// Returns 1 // (largest positive integer with leading and trailing whitespace, and leading "+")
   +2147483647

///////////////
// Returns 0 // (contains letters)
161362stuff
///////////////
// Returns 0 // (number is a float, not an integer -- contains "." in string)
123.4
///////////////
// Returns 0 // (whitespace in middle of string)
2347
9089
///////////////
// Returns 0 // (contains thousands separator ",")
844,241
// Returns 0 // ("+" in middle of string)
2378+87668
///////////////
// Returns 0 // ("-" in middle of string)
3462098-12
// Returns 0 // (number > 2147483647)
2147483648
///////////////
// Returns 0 // (number < -2147483648)
-2147483649
///////////////

Further Reading

整数のさまざまな使用方法、特にLSL(Linden Scripting Language)での使用方法を含む、より広範なカバレッジについては、次を参照してください。 LSL in Focus: Integers.

Pages in category "LSL Integer/ja"

The following 200 pages are in this category, out of 411 total.

(previous page) (next page)
(previous page) (next page)