(クラス)
public final serializable Decimal
10進浮動小数点を表すクラス。
説明
Decimal インスタンスは、
negative? プロパティでエンコードされた符号部と
scale プロパティと共に96ビットの仮数部を使用して浮動小数点数を表す不変のオブジェクトです。
Decimal オブジェクトの値は、
sign * mantissa * 10 –scale で表します。
sign は、
negative? が false なら 1 、trueなら –1 になります。
scale の値は、0~28の範囲で持つことができます。
コンストラクタ public implicit | {Decimal.from-int i:int} |
コンストラクタ public implicit | {Decimal.from-int64 i:int64} |
コンストラクタ public implicit | {Decimal.from-uint64 i:uint64} |
コンストラクタ public implicit | {Decimal.make-zero} |
フィールド public constant Decimal.m1:
uint32 =0
フィールド public constant Decimal.m2:
uint32 =0
フィールド public constant Decimal.m3:
uint32 =0
フィールド public constant Decimal.negative?:
bool =false
フィールド public constant Decimal.scale:
int16 =0
アクセサ public Decimal.signum:
int
アクセサ public Decimal.zero?:
bool
public constant Decimal.epsilon:
Decimal ={Decimal.from-components
m1 = 1,
scale = Decimal.max-scale
}
public constant Decimal.max-scale:
int16 =28
public constant Decimal.max-value:
Decimal ={Decimal.from-components
m3 = max-uint32,
m2 = max-uint32,
m1 = max-uint32
}
min-value: | Decimal 値の最小値は、-(2 96 - 1) であり、十進表記では -79228162514264337593543950335 です。 |
public constant Decimal.min-value:
Decimal ={Decimal.from-components
negative? = true,
m3 = max-uint32,
m2 = max-uint32,
m1 = max-uint32
}
public | {Decimal.canonicalize}:Decimal |
public | {Decimal.object-describe}:void |
public | {Decimal.round-to-scale scale:int,round-to-even?:bool = true }:Decimal |
public | {Decimal.to-double}:double |
public | {Decimal.to-int}:int |
public | {Decimal.to-int64}:int64 |
public | {Decimal.to-uint64}:uint64 |
(ファクトリ)
(コンストラクタ)
public implicit | {Decimal.from-int i:int} |
(コンストラクタ)
public implicit | {Decimal.from-int64 i:int64} |
(コンストラクタ)
public implicit | {Decimal.from-uint64 i:uint64} |
(コンストラクタ)
public implicit | {Decimal.make-zero} |
値が 0 の Decimal オブジェクトを作成します。
注意事項
let v:Decimal のように初期値設定がない
Decimal 変数宣言が正当であるように、このコンストラクタは定義されて、 0 に初期化される変数になります。
(コンストラクタ)
""
(ファクトリ)
10のべき乗で表す Decimal オブジェクトを返します。
i: 10 のぺき乗の指数です。 i の値の範囲は、-28 <= i <= 28 です。
説明
その数値が 10
i に等しい
Decimal オブジェクトを作成します。 もし
i >= 0 であるなら、リターン値の
scale のプロパティは 0 です。もし
i < 0 なら、リターン値の
scale プロパティは -
i になり、そして戻ってリターン値の仮数は 1 になります。
このファクトリーは、 i の値にかかわらず、すばやく結果を返すことができるようにルックアップテーブルを使用することで実装されます。
(フィールド)
public constant Decimal.m1:
uint32 =0
この項目はサポートされていません。内部使用限定となっています。
(フィールド)
public constant Decimal.m2:
uint32 =0
この項目はサポートされていません。内部使用限定となっています。
(フィールド)
public constant Decimal.m3:
uint32 =0
この項目はサポートされていません。内部使用限定となっています。
(フィールド)
public constant Decimal.negative?:
bool =false
もし Decimal の数値が 0 より小さければ、このフィールドは true です。
(フィールド)
public constant Decimal.scale:
int16 =0
(アクセサ)
アクセサ public Decimal.signum:
int Decimal オブジェクトの符号を返します。
戻り値
もし self が正の数を表すなら、 1 を返します。もし self がゼロを表すなら、 0 を返します。もし self が負の数を表すなら、 –1 を返します。
(アクセサ)
アクセサ public Decimal.zero?:
bool Decimal オブジェクトがゼロ (0) と等しいかどうかテストします。
戻り値
self が 0 ならtrue、違うならfalseです。
注意事項
(クラス定数)
public constant Decimal.epsilon:
Decimal ={Decimal.from-components
m1 = 1,
scale = Decimal.max-scale
}
2 つの連続した Decimal の値の間の最小の差は、10 -28に等しい。
(クラス定数)
public constant Decimal.max-scale:
int16 =28
(クラス定数)
public constant Decimal.max-value:
Decimal ={Decimal.from-components
m3 = max-uint32,
m2 = max-uint32,
m1 = max-uint32
}
Decimal 値の最大値は、2 96 - 1 であり、十進表記では 79228162514264337593543950335 です。
(クラス定数)
public constant Decimal.min-value:
Decimal ={Decimal.from-components
negative? = true,
m3 = max-uint32,
m2 = max-uint32,
m1 = max-uint32
}
Decimal 値の最小値は、-(2 96 - 1) であり、十進表記では -79228162514264337593543950335 です。
(メソッド)
(メソッド)
2つの Decimal オブジェクトを加算します。
戻り値
説明
結果の
scale プロパティは、丸める必要がない限り、 2 つのオペランドの
scale プロパティの大きい方と同じになります。もし結果がこの
scale の値から
Decimal の数値として表現することができない場合、
scale の値は結果として表現できるように最大値に下げられます。もし結果の有効桁の喪失があるなら、
銀行家の丸め
が適用されるでしょう。
(メソッド)
public | {Decimal.canonicalize}:Decimal |
この Decimal の数値の小数部分から連続している末尾の0のを取り除きます。
戻り値
self と同じ値ですが、少数桁の右端の 0 を持っていない
Decimal 値です。
プログラミング注意事項
このメソッドは計算により末尾の 0 が膨大に生成される可能性があり、それが計算を継続する前に仮数サイズを減らすように求められる場合に使用してください。
数が実際に排除するべき末尾の 0 を持っていないときは、このメソッドは高負荷になりません、しかし排除されるそれぞれの少数位が仮数部を 10 で割る
round-to-scale 演算を必要とします。
(メソッド)
2 つの Decimal オブジェクトを除算し、その余りとともに整数値に数学的に切り上げた商を返します。
divisor:
self を割ることになる
Decimal オブジェクトです。
戻り値
最初の戻り値は、
self と
a の商を数学的に切り上げした
Decimal オブジェクトです。 2 番目の戻り値は、余りです。もしその正確な値が
Decimal オブジェクトとして表現できない場合、余りは丸められているかもしれません。
説明
返却される値は常に
quotient * divisor + remainder = self の恒等式に従います。商の
scale 属性は常に 0 です。
(メソッド)
2つの Decimal オブジェクトを比較します。
戻り値
もし self が a より大きいなら、 1 が返されます。もし self が a と等しければ、 0 が返されます。もし self が a より小さいなら、 –1 が返されます。
プログラミング注意事項
a が 0 であれば、
signum ゲッターは、より効率的になるでしょう。もし比較が
self と
a が等しいかどうかであるなら、
equal? メソッドの使用がいっそう効率的です。
(メソッド)
2つの Decimal オブジェクトを除算します。
divisor:
self を割ることになる
Decimal オブジェクトです。
戻り値
説明
返却される商は 2 つのオペランドの正確な数学的な商に限りなく近いものになります。もし正確な数学的な商が 2 つの表示することができる
Decimal 値の正確な中間にあるなら、
銀行家の丸め
が結果を計算するために使用されます。
(メソッド)
2 つの Decimal オブジェクトが等しいかどうかテストします。
戻り値
self と a が同じ値ならtrue、違うならfalseです。
注意事項
(メソッド)
2 つの Decimal オブジェクトを除算し、その余りとともに整数値に数学的切り捨てされた商を返します。
divisor:
self を割ることになる
Decimal オブジェクトです。
戻り値
最初の戻り値は、
self と
a の商を数学的に切り捨てした
Decimal オブジェクトです。 2 番目の戻り値は、余りです。もしその正確な値が
Decimal オブジェクトとして表現できない場合、余りは丸められているかもしれません。
説明
返却される値は常に
quotient * divisor + remainder = self の恒等式に従います。商の
scale 属性は常に 0 です。
(メソッド)
2つの Decimal オブジェクトの最大値を計算します。
戻り値
self または、 a の大きい方を返します。もし self と a が等しい場合、 self を返します。
(メソッド)
2つの Decimal オブジェクトの最小値を計算します。
戻り値
self または、 a の小さい方を返します。もし self と a が等しい場合、 self を返します。
(メソッド)
(メソッド)
(メソッド)
public | {Decimal.object-describe}:void |
""
(メソッド)
""
(メソッド)
2 つの Decimal オブジェクトを除算し、その余りとともに整数値に丸めた商を返します。
divisor:
self を割ることになる
Decimal オブジェクトです。
戻り値
最初の戻り値は、
self と
a の商を整数に四捨五入した
Decimal オブジェクトです。 2 番目の戻り値は、余りです。もしその正確な値が
Decimal オブジェクトとして表現できない場合、余りは丸められているかもしれません。
説明
返却される値は常に
quotient * divisor + remainder = self の恒等式に従います。商の
scale 属性は常に 0 です。
(メソッド)
public | {Decimal.round-to-scale scale:int,round-to-even?:bool = true }:Decimal |
指定された小数点の右側の桁数に最も近い値を返します。
scale: 返される結果の小数点以下の桁の最大数を指定します。これは、返される結果の
scale プロパティの最大値です。
round-to-even?: もし
self の値が指定された scale プロパティにおいて
Decimal 値の中間にあるなら、
round-to-even? が trueの場合、
銀行家の丸め
が適用されます。さもなければ、ゼロから遠い方に丸めます。
戻り値
scale より大きくない
scale プロパティで丸めた結果です。もし
self の
scale プロパティが
scale より小さい場合、返却値は
self と同じです。
注意事項
"round-to-scale" を使うことは、もし a が非常に大きく、そして a.scale が scale よりすでに小さい場合、オーバフローを発生することを避けること以外、{a.round-to-scale scale} ( round-to-even? のデフォルト値trueを使用)の値は、 {a.round {Decimal.pow10 -scale}} * {Decimal.pow10 -scale} の式に等しいです。
(メソッド)
(メソッド)
public | {Decimal.to-double}:double |
self の値を double に変換して返します。
戻り値
(メソッド)
public | {Decimal.to-int}:int |
self の値を int に変換して返します。
戻り値
self の値に最も近い
int の値です。もし
self の値が整数の真中にあるなら、
銀行家の丸め
が使われます。もし
self の値の整数の近似値が
int の値が表示することができる範囲外の場合、
OverflowException がスローされます。
(メソッド)
public | {Decimal.to-int64}:int64 |
self の値を int64 に変換して返します。
戻り値
(メソッド)
public | {Decimal.to-uint64}:uint64 |
self の値を uint64 に変換して返します。
戻り値
(メソッド)
2つの Decimal オブジェクトを除算し、その余りとともに整数値に切り捨てた商を返します。
divisor:
self を割ることになる
Decimal オブジェクトです。
戻り値
最初の戻り値は、
self と
a の整数の商を
Decimal オブジェクトです。 2 番目の戻り値は、余りです。もしその正確な値が
Decimal オブジェクトとして表現できない場合、余りは切り捨てられているかもしれません。
説明
返却される値は常に
quotient * divisor + remainder = self の恒等式に従います。さらに、剰余がゼロ以外であるときはいつでも、その符号は常に
self の符号と同じです。商の
scale プロパティは常に0です。