- WSOFT Docs
- ブログ
- 共同作成ガイド
-
製品
- 製品
- PCMX
- WSOFTアカウント
- AliceScript
- AliceScript
- 謝辞
- ダウンロード
- Alice(キャラクター)
- AliceScriptのツアー
- Wikiの概要
- APIブラウザー
- APIブラウザー
- Alice
- break
- continue
- delay
- do
- exit
- for
- foreach
- function
- if
- import
- include
- lock
- read
- return
- string_format
- switch
- using
- while
- write
- Diagnostics
- Environment
- env_clr_version
- env_commandLine
- env_commandLineArgs
- env_set_exitCode
- env_expand_environmentVariables
- env_get_environmentVariable
- env_hasShutdownStarted
- env_impl_architecture
- env_impl_location
- env_impl_name
- env_impl_target
- env_impl_version
- env_Is64BitOperatingSystem
- env_Is64BitProcess
- env_MachineName
- env_NewLine
- env_os_platform
- env_os_version
- env_set_environmentVariable
- Exception
- Interpreter
- gc_collect
- gc_collectAfterExecute
- gc_getTotalMemory
- interpreter_append_output
- interpreter_append_output
- interpreter_consts
- interpreter_namespaces
- interpreter_getVariable
- interpreter_globalVariables
- interpreter_name
- interpreter_nameexists
- interpreter_namespaces
- interpreter_process
- interpreter_processfile
- interpreter_reset_variables
- Type
- Math
- math_abs
- math_acos
- math_acosh
- math_atan
- math_atan2
- math_atanh
- math_bitdecrement
- math_bitincrement
- math_cbrt
- math_celling
- math_clamp
- math_copysign
- math_cos
- math_cosh
- math_e
- math_exp
- math_factorial
- math_floor
- math_fusedmultiplyadd
- math_isFinite
- math_isInfinity
- math_isNaN
- math_isNegativeInfinity
- math_isNormal
- math_isPositiveInfinity
- math_isprime
- math_isSubNormal
- math_max
- math_min
- math_pi
- math_pow
- math_round
- math_sin
- math_sinh
- math_sqrt
- math_tan
- math_tanh
- math_tau
- math_truncate
- Net
- Parsing
- Random
- Security
- Threading
- Array
- Bool
- Bytes
- Delegate
- None
- Number
- String
- string
- CompareTo
- Contains
- EndsWith
- Equals
- Format
- GetBytes
- Indent
- IndexOf
- Insert
- IsEmptyOrNull
- IsEmptyOrWhiteSpace
- IsNormalized
- Join
- LastIndexOf
- Normalize
- PadCenter
- PadLeft
- PadRight
- Remove
- RemoveAt
- Repeat
- Replace
- ReplaceLineEndings
- Split
- SplitLines
- StartsWith
- SubString
- ToLower
- ToLowerInvariant
- ToUpper
- ToUpperInvariant
- Trim
- Trim
- TrimStart
- Variable
- 変更履歴
- 例外
- 例外
- 0x000 NONE
- 0x001 COULDNT_FIND_FUNCTION
- 0x003 INVALID_OPERAND
- 0x004 COULDNT_FIND_VARIABLE
- 0x005 ITS_RESERVED_NAME
- 0x006 ILLEGAL_IDENTIFIER
- 0x009 INCOMPLETE_ARGUMENTS
- 0x01a COULDNT_ADD_PARAMETERS_AFTER_PARMS_KEYWORD
- 0x020 COULDNT_EXECUTE_BLOCK
- 0x021 NEED_BRACKETS
- 0x022 UNNEED_TO_BRACKETS
- 0x04a CASE_BLOCK_MISSING_BREAK
- 0x04b UNKNOWN_ESCAPE_CHAR
- 基本
- Alice in Discord
- 相互運用
- チュートリアル
- ダウンロードセンター
- ほめて.ws
- アイコンメーカー
- WSOFTScript
- Unidet
- WebSailing
- WSNET
- WSTodon
- WSTube
- Lantana
- 法的資料
-
あみうは
- あみうは
- 新学期が始まりました!
- 恋の相談
- プチコン3号で作ったのは?
- オススメの文庫
- マクドナルド最高!
- ios11β レビュー
- あみうはの歌について
- ついに自分のソフトウェアのホームページができました。
- Windowsタブレットをリセットして起動しなくなった人のために
- PCレスで YouTubeの曲を携帯mp3プレイヤーで聴く(iPhone)
- 食べられないラズベリーパイを買いました。(1)
- ラズベリーパイの下ごしらえ(2)
- 小説始めます~
- 女子がキュンとくる行動ベスト3!!
- MacとWindowsについてあまり知られていない事
- macでできる裏技
- ドコモの格安スマホ「MONO」買っちゃいました☆いい所をいくつか
- 『レビュー』iPhone6sを1年間使い続けて思ったこと
- iPhoneの拡大鏡に関するバクを発見しました。
- iPhoneで圧縮ファイルを作成したり解凍する方法
- Obscura2が今だけ無料!使い方まとめ
- Windowsタブレットがブルースクリーンになった時のメモ
- お知らせ
number
数値型は実数を表します。
定義
名前空間:Alice / アセンブリ : Losetta.dll / サポート: AliceScript1
数値型は実数を表します。数値型は算術、比較、等値演算子をサポートしています。
AliceScriptの数値型の表現できるおおよその範囲は、±5.0 × 10−324 - ±1.7 × 10308(-15~17桁)で、サイズは8バイトです。
数値型の規定値はゼロ0です。また、数値型で非数、正方向の無限、負方向の無限を表す定数がそれぞれ、NaN
、∞
、-∞
として定義されています。
数値型への暗黙的な変換は存在しません。型変換演算子(as)を使用するかConvert
メソッドを使って、文字列型、bool
型、bytes
型からの明示的な変換がサポートされています。また、数値型専用のメソッドは存在しません。この型の型指定修飾子はnumber
です。
AliceScriptの数値型では小数点以下の計算が予想通りにいかない場合があります。数値型の計算誤差の記事を参照してください。
説明
数値型は、-1.79769313486232 e308
から+1.79769313486232 e308
までの範囲の数および非数(NaN)をAliceScriptで表現することを表しています。この型は、非常に大きな値(たとえば、惑星や銀河間の距離など)または非常に小さな値(物質の分子量など)を表すことができる代わりに、しばしば不正確な値(地球から別の太陽系までの距離など)を表すこともあります。
数値型は、2進浮動小数点数演算のIEC 60559:1989 (IEEE 754) 標準に準拠しています。
浮動小数点表現と精度
コンピューター人間の使うような10進数で値を格納することができません。必ず2進数に変換して演算し、保存する必要があります。
たとえば、\(0.00025\)という数があったとします。この数を2進数に変換するにはまず、この数を仮数と指数、符号に分けます。分けると、次のようになります。
部 | 値 |
---|---|
仮数 | 0.25 |
指数 | -3 |
符号 | + |
小数が一部の値(\(1/3\)や\(\pi\)など)を正確に表すことができないのと同様に、2進数の小数は一部の小数値を表すことが出来ません。たとえば、\(1/10\)は10進数では\(0.1\)として正確に表されますが、2進数では、\(0.001100110011...\)と表され、0011
が無限に繰り返されます。
この場合、浮動小数点数値は途中で計算を停止し、値を丸めた不正確な値をとります。
また、一般に元の浮動小数点値に対して追加の数学演算を実行すると、精度がさらに低下する傾向があります。たとえば、\(0.1\)に10を掛けた結果と\(0.1\)に\(0.1\)を9回足した結果を比較すると、後者の方がさらに8回の演算が必要なため、足し算の精度は下がります。たとえば、次の例のようなことが実際起こり得ます。
var value = 0.1;
var result1 = value * 10;
var result2 = 0;
for(var i=0;i<=10;i++){
result2 += value;
}
print("0.1 * 10 = {0}",result1); // 出力例 : 0.1 * 10 = 1
print("0.1を10回足したもの = {0}",result2); // 出力例 : 0.1を10回足したもの = 1.09999999
一部の数値は2進数の小数として正確に表現することができないため、数値型は実数の近似しかできません。
また、数値型には有効桁数の制限があり、これによって値がどれだけ正確に実数に近似するかが決まります。数値型の精度は最大15桁です。