Skip to content

API CSng zh tw

Codex edited this page Sep 23, 2026 · 1 revision

CSng

ClassicUO / Basic IDE

Home · API · Basic

讀取用於計算的數值設定,例如以秒表示的延遲。

完整語法

CSng(value:Any) -> Decimal

參數

  • value — 必須提供一個 Integer/Decimal 或數字 String。文字使用小數點和可選指數,不受介面語言影響;此處 "0x0EED" 不是數字字串。無效文字、Array、Object、Unit 轉成 0。先以 IsNumeric 檢查輸入。

傳回值

傳回以 64 位元 double 儲存的 Decimal。CDbl 與 CSng 的轉換及精度相同;CSng 不會縮成 32 位元 Single。無效輸入變成 0,因此零本身不能證明轉換成功。可能傳回 NaN 或 Infinity,須另行檢查範圍。

行為

  • 必須提供一個 Integer/Decimal 或數字 String。文字使用小數點和可選指數,不受介面語言影響;此處 "0x0EED" 不是數字字串。無效文字、Array、Object、Unit 轉成 0。先以 IsNumeric 檢查輸入。
  • 傳回以 64 位元 double 儲存的 Decimal。CDbl 與 CSng 的轉換及精度相同;CSng 不會縮成 32 位元 Single。無效輸入變成 0,因此零本身不能證明轉換成功。可能傳回 NaN 或 Infinity,須另行檢查範圍。

內部函式:從呼叫到結果

讀取用於計算的數值設定,例如以秒表示的延遲。

1. BasicDouble

必須提供一個 Integer/Decimal 或數字 String。文字使用小數點和可選指數,不受介面語言影響;此處 "0x0EED" 不是數字字串。無效文字、Array、Object、Unit 轉成 0。先以 IsNumeric 檢查輸入。

傳回以 64 位元 double 儲存的 Decimal。CDbl 與 CSng 的轉換及精度相同;CSng 不會縮成 32 位元 Single。無效輸入變成 0,因此零本身不能證明轉換成功。可能傳回 NaN 或 Infinity,須另行檢查範圍。

專案原始碼: external/InjectionScript/src/InjectionScript/Runtime/InjectionApi.cs; 函式 BasicDouble.

範例

CSng — 1

# CSng1
#
# 讀取用於計算的數值設定例如以秒表示的延遲#
# 傳回以 64 位元 double 儲存的 DecimalCDbl  CSng 的轉換及精度相同CSng 不會縮成 32 位元 Single無效輸入變成
# 0因此零本身不能證明轉換成功可能傳回 NaN  Infinity須另行檢查範圍SUB Main()
    # value="0.35" 使用小數點Main 傳回 Decimal 0.35 不會等待RETURN CSng("0.35")
END SUB

參數與執行說明:

  • value="0.35" 使用小數點。Main 傳回 Decimal 0.35 秒,不會等待。

CSng — 2

# CSng2
#
# 讀取用於計算的數值設定例如以秒表示的延遲#
# 傳回以 64 位元 double 儲存的 DecimalCDbl  CSng 的轉換及精度相同CSng 不會縮成 32 位元 Single無效輸入變成
# 0因此零本身不能證明轉換成功可能傳回 NaN  Infinity須另行檢查範圍SUB Main()
    # value="3e1" 表示 30除以 4 得到 Decimal 7.5指數格式不受介面語言影響VAR total = CSng("3e1")
    RETURN total / 4
END SUB

參數與執行說明:

  • value="3e1" 表示 30,除以 4 得到 Decimal 7.5。指數格式不受介面語言影響。

CSng — 3

# CSng3
#
# 讀取用於計算的數值設定例如以秒表示的延遲#
# 傳回以 64 位元 double 儲存的 DecimalCDbl  CSng 的轉換及精度相同CSng 不會縮成 32 位元 Single無效輸入變成
# 0因此零本身不能證明轉換成功可能傳回 NaN  Infinity須另行檢查範圍SUB Main()
    # Milliseconds 接收 secondsText="0.35"非數字文字NaN 及不在 0.1..5 秒內的值傳回 -1其餘乘以 1000傳回 Decimal 350
    # 供後續等待使用本函式不呼叫 WaitRETURN Milliseconds("0.35")
END SUB

SUB Milliseconds(secondsText)
    IF NOT IsNumeric(secondsText) THEN
        RETURN -1
    END IF
    VAR seconds = CSng(secondsText)
    IF CStr(seconds) = "NaN" OR seconds < 0.1 OR seconds > 5 THEN
        RETURN -1
    END IF
    RETURN seconds * 1000
END SUB

參數與執行說明:

  • Milliseconds 接收 secondsText="0.35"。非數字文字、NaN 及不在 0.1..5 秒內的值傳回 -1;其餘乘以 1000,傳回 Decimal 350 供後續等待使用。本函式不呼叫 Wait。

Русский · English · Українська · Français · Deutsch · Italiano · Español · 繁體中文 · 日本語 · 한국어

Clone this wiki locally