Decimalデシマルモジュール

本ページには広告が含まれています。

浮動小数点数の演算による誤差を防ぎ、正確な計算を行います。

構文
引数
戻り値

プログラム

UWSC

Decimalモジュールとは

Decimalモジュールは精度の高い計算を行う必要があるときに使用します。JavaScriptで高精度な数値計算を行うdecimal.jsというライブラリをUWSCでも利用できるように作成したものです。

decimal.jsのダウンロードはGitHub - MikeMcl/decimal.js: An arbitrary-precision Decimal type for JavaScript · GitHub、公式ドキュメントはdecimal.js APIで確認できます。

UWSCの倍精度浮動小数点型(Double型)は15桁程度の精度がありますが、すべての実数を表現できるわけではないため期待値と異なる値になる場合もあります。

正しい計算結果を得られない原因については誤差の項目で記述しています。

Decimalインスタンス

Decimalインスタンスとは、浮動小数点数を厳密に表現するためのオブジェクトです。Decimalモジュールではオブジェクトとして扱うことはできないので配列で数値を管理します。

DecimalモジュールのConstructor関数でDecimalインスタンスを生成することができます。

配列の0番目に符号、1番目に指数、2番目以降に指定桁ごと(デフォルト:7桁)に分割した仮数部が格納されます。

以下はConstructor関数でDecimalインスタンスを生成するプログラムです。戻り値は配列なのでJOIN関数 (スクリプト関数)でカンマで区切った文字列として出力します。

出力される結果の形式は符号,指数部,仮数部1,仮数部2,…です。仮数部は小数点の位置を中心として指定桁(7桁)ごとに区切られます。

UWSC
結果
プレーンテキスト

Constructor関数で生成した符号、指数、仮数部で構成されるDecimalインスタンスを文字列に戻すにはfiniteToString関数を使います。

UWSC

誤差

丸め誤差

丸め誤差とは、数値を有限の桁数で表すためにある桁以降を切り捨て、切り上げ、四捨五入することで生じる誤差。

例えば無限に続く円周率3.141592…を小数点以下3桁目を四捨五入して3.14として扱うことは、1592…が切り捨てられ丸め誤差となります。

打切り誤差

打切り誤差とは、本来無限に続く計算を途中で打ち切ることによって生じる誤差。

以下は1/3を計算した結果です。無限小数ですが、小数点以下16桁目以降は切り捨てられています。

UWSC
結果
プレーンテキスト

以下は2/3を計算した結果です。1/3の時と同様に無限小数ですが、小数点以下16桁目を四捨五入することで切り上げられています。

UWSC
結果
プレーンテキスト

dividedBy関数を使うと有効桁数を指定することができます。以下は1/3を有効桁数50桁に指定。

UWSC
結果
プレーンテキスト

以下は2/3を有効桁数20桁、丸めモードを1(0の方向へ丸める)を指定。

UWSC
結果
プレーンテキスト

情報落ち

情報落ちとは、絶対値の大きい数と小さい数を加減算したとき、小さい数の情報が結果に反映されずに生じる誤差。

10000000000000000 + 1 - 10000000000000000を計算する例です。\(10^{16}\)という大きい数に対して1という小さい数を加算しても結果に反映されず誤差が生じます。

UWSC
結果
プレーンテキスト
UWSC
結果
プレーンテキスト

桁落ち

桁落ちとは、ほぼ等しい数を減算したときに生じる誤差。例えば0.123456789 - 0.123456788の計算を行ったとき0.123456789、0.123456788は有効桁数9桁だが、計算結果の0.000000001は有効桁数1桁というように有効桁数が極端に減少することをいいます。

以下のプログラムは桁落ち以前に小数値であるために丸め誤差が発生しているため、結果が正しく出力されません。

UWSC
結果
プレーンテキスト

Decimalモジュールを使うと正しい結果を得られます。

UWSC
結果
プレーンテキスト

オーバーフロー/アンダーフロー

オーバーフローは、データ型で扱える範囲の上限値を超えたときに発生します。Decimalモジュールではデフォルトで9E+15まで扱うことができます。

一方でアンダーフローは、データ型で扱える範囲の下限値を下回ったときに発生します。Decimalモジュールではデフォルトで-9E+15まで扱うことができます。

特殊値

Decimalモジュールでは通常の値とは別に以下の特殊値があります。decimal.jsで無限大を表す値はInfinityですが、UWSCでは同じ無限大を表す値としてINFがあるのでそれを文字列形式の"INF"として扱うこととします。

特殊値 意味
decimal.js UWSC
Infinity INF 正の無限大
-Infinity -INF 負の無限大
NaN NaN 非数

decimal.jsで値は符号、指数、仮数部の配列で構成で表現されますが、特殊値は普通の値では表現できないため配列構成も特殊です。

数値を配列に変換するにはConstructor関数を使います。

まずはdecimal.jsでの特殊値の配列構成です。Decimal{ }内が配列の値で、カンマ区切りで0〜2番目の値で特殊値を表します。

decimal.js

次にUWSCでの特殊値の配列構成です。decimal.jsではNaNやnullで表していた値をUWSCではNULLやFALSEとして扱っています。UWSCでNaNに該当する値がないのと、特殊値を判断する分岐処理での都合によるためです。

UWSC

また特殊値を含む値の四則演算の結果は以下の表のようになります。

1行目は被演算数INF、演算数INFのときの結果が、加算はINF、減算はNaN、乗算はINF、除算はNaNということを表しています。

式 結果
被演算数 演算数 加算 減算 乗算 除算
INF INF INF NaN INF NaN
INF -INF NaN INF -INF NaN
INF NaN NaN NaN NaN NaN
INF 0 INF INF NaN INF
-INF INF NaN -INF -INF NaN
-INF -INF -INF NaN INF NaN
-INF NaN NaN NaN NaN NaN
-INF 0 -INF -INF NaN -INF
NaN INF NaN NaN NaN NaN
NaN -INF NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN
NaN 0 NaN NaN NaN NaN
0 INF INF -INF NaN 0
0 -INF -INF INF NaN 0
0 NaN NaN NaN NaN NaN
0 0 0 0 0 NaN

以下の表は被演算数、演算数でまとめたもので内容は上の表と同じです。

被演算数 演算数
INF -INF NaN 0
INF +:INF
-:NaN
*:INF
/:NaN
+:NaN
-:INF
*:-INF
/:NaN
+:NaN
-:NaN
*:NaN
/:NaN
+:INF
-:INF
*:NaN
/:INF
-INF +:NaN
-:-INF
*:-INF
/:NaN
+:-INF
-:NaN
*:INF
/:NaN
+:NaN
-:NaN
*:NaN
/:NaN
+:-INF
-:-INF
*:NaN
/:-INF
NaN +:NaN
-:NaN
*:NaN
/:NaN
+:NaN
-:NaN
*:NaN
/:NaN
+:NaN
-:NaN
*:NaN
/:NaN
+:NaN
-:NaN
*:NaN
/:NaN
0 +:INF
-:-INF
*:NaN
/:0
+:-INF
-:INF
*:NaN
/:0
+:NaN
-:NaN
*:NaN
/:NaN
+:0
-:0
*:0
/:NaN

プロパティ

演算精度や丸め方法、指数範囲などを制御します。

変数説明既定値
precision有効桁数20
rounding丸めモード4
modulo剰余の定義を指定1
toExpNeg指数表記を使い始める負の指数の閾値しきいち-7
toExpPos指数表記を使い始める正の指数の閾値しきいち21
minE許容する最小指数。指数がこの数値以下になると0を返します。-9E+15
maxE許容する最大指数。指数がこの数値以上になるとINFを返します。9E+15

プロパティ値は以下のように指定することで変更できます。

UWSC

precision

有効桁数を指定します。演算結果がこの桁数に丸められます。デフォルトでは有効桁数20桁。

このプロパティはライブラリ全体の既定の有効桁数を設定するグローバル設定です。インスタンスやメソッド呼び出しで明示的に有効桁数を渡さない場合に使われます。

rounding

丸めモードを指定します。値は丸めモードの表にあるように0から8の値を指定できます。デフォルトでは四捨五入(4)。

このプロパティはライブラリ全体の既定の丸めモードを設定するグローバル設定です。インスタンスやメソッド呼び出しで明示的に丸めモードを渡さない場合に使われます。

modulo

剰余を求める際のモードを設定します。

プロパティ値説明
ROUND_UP0無限大方向へ丸める
ROUND_DOWN10の方向へ丸める
ROUND_FLOOR3負の無限大方向へ丸める
ROUND_HALF_EVEN6偶数丸め
EUCLID9剰余は常に正数

以下の式は各モードでの基本形式です。

\[ q = \operatorname{round\_mode}\!\left(\frac{a}{n}\right),\qquad r = a - n\cdot q \]

被除数を\(a\)、除数を\(n\)、商を\(q\)、剰余を\(r\)とする。ただし\(n \ne 0\)。\(\vert x \vert\)は絶対値、\(\lceil x \rceil\)は天井関数、\(\lfloor x \rfloor\)は床関数、sgn(x)は符号関数(\(x > 0 \to 1\)、\(x = 0 \to 0\)、\(x < 0 \to -1\))を表します。

指定したモードでの商を求めるにはquotient関数、剰余を求めるにはmodulo関数を使います。

ROUND_UP

商を切り上げで丸めます。被除数が負なら剰余は正、被除数が正なら剰余は負となります。

丸め関数(無限大方向へ丸める)

\[ \operatorname{round\_up}(y) = \begin{cases} \lceil y\rceil & (y>0)\\ \lfloor y\rfloor & (y<0)\\ 0 & (y=0) \end{cases} \]

商と剰余

\[ q=\operatorname{round\_up}\!\left(\frac{a}{n}\right),\qquad r=a-nq \]

\(a\)を-5、\(n\)を3としたときの商と剰余を求めます。

\[ q=\operatorname{round\_up}\!\left(\frac{-5}{3}\right)=\lfloor -1.6\rfloor=-2 \] \[ \qquad r=a-nq=-5-3\times(-2)=-5+6=1 \]

以下はプロパティにROUND_UPを指定したときの剰余を求めるプログラムです。

UWSC
結果
プレーンテキスト
ROUND_DOWN

丸め関数(0の方向へ丸める)

\[ \operatorname{trunc}(y)=\begin{cases} \lfloor y\rfloor & (y\ge0)\\[4pt] \lceil y\rceil & (y<0) \end{cases} \]

商と剰余

\[ q=\operatorname{trunc}\!\left(\frac{a}{n}\right),\qquad r=a-nq \]

\(a\)を-5、\(n\)を3としたときの商と剰余を求めます。

\[ q=\operatorname{round\_up}\!\left(\frac{-5}{3}\right)=\lceil -1.6\rceil=-1 \] \[ \qquad r=a-nq=-5-3\times(-1)=-5+3=-2 \]

以下はプロパティにROUND_DOWNを指定したときの剰余を求めるプログラムです。

UWSC
結果
プレーンテキスト
ROUND_FLOOR

丸め関数(負の無限大方向へ丸める)

\[ \operatorname{floor}(y)=\lfloor y\rfloor \]

商と剰余

\[ q=\lfloor\tfrac{a}{n}\rfloor,\qquad r=a-nq \]

\(a\)を-5、\(n\)を3としたときの商と剰余を求めます。

\[ q=\lfloor\tfrac{-5}{3}\rfloor=\lfloor-1.6\rfloor=-2 \] \[ \qquad r=a-nq=-5-3\times(-2)=-5+6=1 \]

以下はプロパティにROUND_FLOORを指定したときの剰余を求めるプログラムです。

UWSC
結果
プレーンテキスト
ROUND_HALF_EVEN

補助量

\[ m=\lfloor y\rfloor,\qquad d=y-m\quad(0\le d<1) \]

丸め関数(最近接、端点は偶数に丸める)

\[ \operatorname{round\_half\_even}(y)= \begin{cases} m & (d<0.5),\\[6pt] m+1 & (d>0.5),\\[6pt] m & (d=0.5\ \text{かつ}\ m\ \text{が偶数}),\\[6pt] m+1 & (d=0.5\ \text{かつ}\ m\ \text{が奇数}). \end{cases} \]

商と剰余

\[ q = \operatorname{round\_half\_even}\!\left(\frac{a}{n}\right),r=a-nq \]

\(a\)を-5、\(n\)を3としたときの商と剰余を求めます。

\[ q = \operatorname{round\_half\_even}\!\left(\frac{-5}{3}\right)=\lfloor -1.6\rfloor=-2 \] \[ r=a-nq=-5-3\times(-2)=-5+6=1 \]

以下はプロパティにROUND_HALF_EVENを指定したときの剰余を求めるプログラムです。

UWSC
結果
プレーンテキスト
EUCLID

商

\[ q = \operatorname{sgn}(n)\cdot\left\lfloor\frac{a}{|n|}\right\rfloor \]

これにより剰余は必ず非負となる(0 ≤ r < |n|)。

剰余

\[ r = a - n\cdot\Big(\operatorname{sgn}(n)\cdot\left\lfloor\frac{a}{|n|}\right\rfloor\Big) \] \[ r \equiv a \pmod{|n|},\qquad 0\le r<|n| \]

\(a\)を-5、\(n\)を3としたときの商と剰余を求めます。

\[ q = \operatorname{sgn}(3)\cdot\left\lfloor\frac{-5}{|3|}\right\rfloor = 1\cdot\left\lfloor-1.6\right\rfloor=-2 \] \[ r = -5-3\cdot\Big(\operatorname{sgn}(3)\cdot\left\lfloor\frac{-5}{|3|}\right\rfloor\Big)=-5-3\cdot\Big(1\cdot\left\lfloor-1.6\right\rfloor\Big)=-5-3\cdot\Big(1\cdot(-2)\Big)=-5-3\cdot-2=-5+6=1 \]

以下はプロパティにEUCLIDを指定したときの剰余を求めるプログラムです。

UWSC
結果
プレーンテキスト

toExpNeg

負数で指数を使い始める値を指定します。

負数では指数を使い始める値(toExpNeg)は-7乗がデフォルトになっているため指数の値がそれ以下のときは指数表記となります。-6乗までは固定小数点で出力されます。

UWSC
結果
プレーンテキスト

以下は\(2^{-20}\)を求めるプログラムです。デフォルトでは-7乗で指数表記となります。

UWSC
結果
プレーンテキスト

toExpNegに負数を指定することで指数を使い始める値を指定できます。以下は負の指数の閾値を-10としています。

UWSC
結果
プレーンテキスト

toExpPos

正数で指数を使い始める値を指定します。

正数では指数を使い始める値(toExpPos)は21乗がデフォルトになっているため指数の値がそれ以上のときは指数表記となります。20乗までは固定小数点で出力されます。

UWSC
結果
プレーンテキスト

以下は\(2^{100}\)を求めるプログラムです。デフォルトでは有効桁数(precision)が20桁、正数では指数を使い始めるの値(toExpPos)が21乗なので以下のように丸められてしまいます。

UWSC
結果
プレーンテキスト

関数を実行する前にプロパティに値を指定することで結果の精度を変更できます。

以下は有効桁数を35桁、指数を使い始める値を50乗としています。大きい値を指定することで結果を丸めずに求めることができます。

UWSC
結果
プレーンテキスト

minE

許容する指数の下限値を指定します。これを下回る値はアンダフローとして扱われ0を返します。

以下は0.01、0.001を指数表記にするプログラムです。

UWSC
結果
プレーンテキスト

eの右側の数値が指数を表しています。

以下は指数が-3以下のときはアンダーフローとし0を返します。0.01は指数表記だと1e-2なので0.01を返しますが、0.001は指数表記だと1e-3となりminEで指定された-3以下となるので0を返します。

UWSC
結果
プレーンテキスト

maxE

許容する指数の上限値を指定します。これを上回る値はオーバーフローとして扱われINFを返します。

以下は10000000、100000000を指数表記にするプログラムです。

UWSC
結果
プレーンテキスト

minEのときと同様、eの右側の数値が指数を表しています。

以下は指数が8以上のときはオーバーフローとしてINFを返します。10000000は指数表記だと1e+7なので10000000を返しますが、100000000は指数表記だと1e+8となりmaxEで指定された8以上となるのでINFを返します。

UWSC
結果
プレーンテキスト

引数

精度(Precision)

演算結果の精度を表します。この設定値を超える桁数が必要になった場合、rm:丸めモード(Rounding Mode)のルールに従って丸められます。デフォルトは20桁です。

特定の関数の呼び出しごとに適用するローカルな有効桁数のオーバーライドです。該当呼び出しだけに適用され、他の操作や既定値は変わりません。

演算時に一時的に計算精度を制御したいときに使います。

以下は引数にprを持つ関数です。

  1. dividedBy関数
  2. #div
  3. minus関数
  4. #sub
  5. plus関数
  6. #add
  7. times関数
  8. #mul
  9. #divide
  10. #getLN10
  11. #intPow
  12. calculate関数
  13. calcRPN関数
  14. toRPN関数

以下は除算の結果を指定した桁数で丸めるプログラムです。

UWSC
結果
プレーンテキスト

精度が整数の桁数よりも小さい場合、先頭からprで指定された桁以降は0になります。丸めモードはデフォルトでは四捨五入(4)が指定されています。

UWSC
結果
プレーンテキスト

有効桁数(significant digits)

演算後の最終的な丸め・フォーマットを行うときに使います。

以下は引数にsdを持つ関数です。

  1. toBinary関数
  2. toHexadecimal関数
  3. toOctal関数
  4. toPrecision関数
  5. toSignificantDigits関数
  6. #finalise
  7. #finiteToString
  8. #getLN10
  9. getPI関数
  10. naturalExponential関数
  11. naturalLogarithm関数
  12. #toStringBinary

丸めモード(Rounding Mode)

演算結果を有効桁数に合わせる際の丸め方を表す整数を指定します。デフォルトは4の四捨五入です。

特定の丸め操作を行うメソッド呼び出しごとに使うローカルな丸めモードのオーバーライドです。該当呼び出しだけに適用され、他の操作や既定値は変わりません。

定数名はUWSCでは定義していないので0〜8の値を直接指定してください。

値定数名説明
0ROUND_UP無限大方向へ丸める
1ROUND_DOWN0の方向へ丸める
2ROUND_CEIL正の無限大方向へ丸める
3ROUND_FLOOR負の無限大方向へ丸める
4ROUND_HALF_UP四捨五入(境界値は無限大方向へ丸める)
5ROUND_HALF_DOWN五捨六入(境界値は0の方向へ丸める)
6ROUND_HALF_EVEN偶数丸め
7ROUND_HALF_CEIL正の方向へ丸める
8ROUND_HALF_FLOOR負の方向へ丸める

以下は引数にrmを持つ関数です。

  1. dividedBy関数
  2. #div
  3. minus関数
  4. #sub
  5. plus関数
  6. #add
  7. times関数
  8. #mul
  9. toBinary関数
  10. toDecimalPlaces関数
  11. toExponential関数
  12. toFixed関数
  13. toHexadecimal関数
  14. #toNearest
  15. toOctal関数
  16. toPrecision関数
  17. toSignificantDigits関数
  18. #checkRoundingDigits
  19. #divide
  20. #finalise
  21. getPI関数
  22. #toStringBinary
  23. calculate関数
  24. toRPN関数

小数点以下の桁数(decimal places)

小数点以下の桁数を何桁に丸めるかを指定します。

以下は引数にdpを持つ関数です。

  1. dividedBy関数
  2. toDecimalPlaces関数
  3. toExponential関数
  4. toFixed関数
  5. #divide
  6. #div

数値型(isNumeric)

計算結果(戻り値)を数値型で返す場合はTrueを指定します。

デフォルト値はFalseで文字列型で返します。

関数一覧

メイン関数

関数名 説明 カテゴリ 短縮形
absoluteValue関数 絶対値 abs
ceil関数 正の無限大方向へ丸める 丸め処理
clampedTo関数 数値を範囲内に収める 丸め処理 clamp
comparedTo関数 xとyを比較 比較 cmp
cosine関数 余弦関数 三角関数 cos
cubeRoot関数 三乗根 冪根(累乗根) cbrt
decimalPlaces関数 小数部の桁数 dp
dividedBy関数 除算 四則演算 div
dividedToIntegerBy関数 xをyで除算した整数部 divToInt
equals関数 xとyが等しいか 比較 eq
floor関数 負の無限大方向へ丸める 丸め処理
greaterThan関数 xがyより大きいか 比較 gt
greaterThanOrEqualTo関数 xがy以上か 比較 gte
hyperbolicCosine関数 双曲余弦関数 双曲線関数 cosh
hyperbolicSine関数 双曲正弦関数 双曲線関数 sinh
hyperbolicTangent関数 双曲正接関数 双曲線関数 tanh
inverseCosine関数 逆余弦関数 逆関数 acos
inverseHyperbolicCosine関数 逆双曲線余弦関数 逆双曲線関数 acosh
inverseHyperbolicSine関数 逆双曲線正弦関数 逆双曲線関数 asinh
inverseHyperbolicTangent関数 逆双曲線正接関数 逆双曲線関数 atanh
inverseSine関数 逆正弦関数 逆関数 asin
inverseTangent関数 逆正接関数 逆関数 atan
isFinite関数 有限値か 真偽値
isInteger関数 整数か 真偽値 isInt
isNaN関数 NaNか 真偽値
isNegative関数 負数か 真偽値 isNeg
isPositive関数 正数か 真偽値 isPos
isZero関数 0か 真偽値
lessThan関数 xがyより小さいか 比較 lt
lessThanOrEqualTo関数 xがy以下か 比較 lte
logarithm関数 対数もしくは常用対数 対数 log
minus関数 減算 四則演算
modulo関数 剰余(余り) mod
negated関数 xの正負を反転 neg
plus関数 加算 四則演算
precision関数 有効桁数 sd
round関数 丸めモードを使用した丸め処理 丸め処理
sine関数 正弦関数 三角関数 sin
squareRoot関数 平方根 冪根(累乗根) sqrt
tangent関数 正接関数 三角関数 tan
times関数 乗算 四則演算
toBinary関数 10進数を2進数に変換 進数変換
toDecimalPlaces関数 小数点以下を丸める 丸め処理 toDP
toExponential関数 指数表記に変換
toFixed関数 小数点以下を丸める 丸め処理
toFraction関数 既約分数にした配列を求める
toHexadecimal関数 10進数を16進数に変換 進数変換 toHex
toJSON関数
toNearest関数 指定した倍数に最も近い値への丸め処理 丸め処理
toNumber関数 Decimalインスタンス
toOctal関数 10進数を8進数に変換 進数変換
toPower関数 累乗 pow
toPrecision関数 指定した有効桁数、丸めモードで丸めた文字列を返す
toSignificantDigits関数 指定した有効桁数、丸めモードで丸めたDecimalインスタンスを返す toSD
toString関数 Decimalインスタンスを文字列型に変換
truncated関数 小数点以下を切り捨て、0の方向へ丸める。 trunc
valueOf関数

ヘルパー関数

メイン関数の内部で補助するために使われている関数。

関数名説明
digitsToString関数配列dに格納されている数字を桁合わせして結合
checkInt32関数数値が32ビット符号付き整数(-2,147,483,648 ~ 2,147,483,647)、もしくはmin以上max以下の範囲内にあるか
checkRoundingDigits関数丸め処理の妥当性を検証
convertBase関数strに指定された文字列をbaseInの進数からbaseOutの進数に変換します
cosine2関数cosine関数のヘルパー関数
divide関数dividedBy関数のヘルパー関数
finalise関数Decimalインスタンスを指定した有効桁数、丸めモードで丸めます
finiteToString関数Decimalインスタンスを文字列型に変換します
getBase10Exponent関数\(\log_{10}{digits}\)を求める
getLn10関数\(\log_{e}{10}\)をsdの有効桁数で返す
getPi関数円周率をsdの有効桁数で返す。
getPrecision関数xの有効桁数を返す。
getZeroString関数0をkの数だけ結合した文字列
intPow関数\(k^{n}\)を返します。
isOdd関数xが奇数か
maxOrMin関数
naturalExponential関数ネイピア数\(e\)を底、xを指数とする\(e^{x}\)
naturalLogarithm関数ネイピア数を底とした\(\log_{e}{y}\)
nonFiniteToString関数
parseDecimal関数数値または文字列をDecimalインスタンスに変換します
parseOther関数特殊値をDecimalインスタンスに変換します
sine2関数sine関数のヘルパー関数
taylorSeries関数テイラー展開を計算します。正弦関数、余弦関数、双曲線正弦関数、双曲線余弦関数の計算に使用。
tinyPow関数\(b^{e}\)を求める
toLessThanHalfPi関数三角関数の計算で入力された角度を\(0 〜 \frac{\pi}{2}\)の範囲に正規化します
toLessThanHalfPi2関数toLessThanHalfPi関数の補助関数
toStringBinary関数
truncate関数

その他関数

ヘルパー関数に記載はないがdecimal.jsで定義されているその他関数。

関数名説明
compare関数aとbを大小関係を比較
Constructor関数vを符号、指数、仮数部で構成される配列(Decimalインスタンス)に変換
isDecimalInstance関数vがDecimalインスタンスか
multiplyInteger関数整数同士の乗算を行う
subtract関数減算

自作関数

Decimalモジュールの関数を使った計算処理を簡潔に記述するために当サイトの管理人が定義した関数。

関数名説明
calculate関数tokenize関数、toRPN関数、calcRPN関数の3つをまとめた関数で、文字列型で指定された計算式を逆ポーランド記法で計算した結果を返します。
calcRPN関数逆ポーランド記法を計算します
cmpPrecedence関数
isOperator関数演算子か
quotient関数除算の商の整数部を返す
tokenize関数数式をトークンに分割します
toRPN関数トークンを逆ポーランド記法に変換します

メイン関数

absoluteValue関数

xの絶対値を返します。

UWSC
x必須
絶対値を返す数値、文字列もしくはDecimalインスタンス

-12.5、1.5の絶対値を求めます。

UWSC

ceil関数

xを正の無限大方向へ丸めます。

UWSC
x必須
丸め対象となる数値、文字列もしくはDecimalインスタンス

5.4、-4.9を正の無限大方向へ丸めます。

UWSC

clampedTo関数

数値を指定した範囲内に収めます。xがminより小さい場合はminに、maxよりも大きい場合はmaxに丸め込み、それ以外はそのまま返します。

UWSC
x必須
範囲内に収める対象となる数値、文字列もしくはDecimalインスタンス
min必須
下限値
max必須
上限値

150を0から100の範囲内に収めます。上限値の100を上回っているので100となります。

UWSC
結果
プレーンテキスト

-5を0から100の範囲内に収めます。下限値の0を下回っているので0となります。

UWSC
結果
プレーンテキスト

25を0から100の範囲内に収めます。下限値の0を上回っていて、上限値の100を下回っているので、25をそのまま返します。

UWSC
結果
プレーンテキスト

comparedTo関数

x、yの値を比較し、大小関係を数値で返します。

UWSC
x必須
大小を比較する1つ目の数値、文字列もしくはDecimalインスタンス
y必須
大小を比較する2つ目の数値、文字列もしくはDecimalインスタンス

戻り値は以下の表に示すとおりです。

戻り値説明
1xがyより大きい
-1xがyより小さい
0xとyは同値
NaNどちらか一方または両方がNaN

5と1を比較します。xがyより大きいので1を返します。

UWSC
結果
プレーンテキスト

-5と20を比較します。xがyより小さいので-1を返します。

UWSC
結果
プレーンテキスト

5と5を比較します。同値なので0を返します。

UWSC
結果
プレーンテキスト

10とNaNを比較します。一方がNaNなのでNaNを返します。

UWSC
結果
プレーンテキスト

cosine関数

x(弧度法)の余弦(斜辺と底辺の比)を求めます。

UWSC
x必須
弧度法による角度を表す数値、文字列もしくはDecimalインスタンス

0.25ラジアンの余弦を求めます。

UWSC
結果
プレーンテキスト

弧度法(ラジアン単位)で指定する場合はdegToRad関数 (自作関数)を使って度数法を弧度法に変換します。以下は度数法で30°の余弦を求めています。cos30°の値は\(\frac{\sqrt{3}}{2} = 0.8660254038\)です。

UWSC
結果
プレーンテキスト

cubeRoot関数

xの三乗根を返します。

UWSC
x必須
三乗根を求める対象となる数値、文字列もしくはDecimalインスタンス

9、125、-1000の三乗根を返します。

UWSC

decimalPlaces関数

xの小数部の桁数を返します。

UWSC
x必須
小数部の桁数を求める対象となる数値、文字列もしくはDecimalインスタンス

1.235、-27の小数部の桁数を返します。

UWSC

dividedBy関数

dividendをdivisorで割った値を返します。

UWSC
dividend必須
被除数となる数値、文字列もしくはDecimalインスタンス
divisor必須
除数となる数値、文字列もしくはDecimalインスタンス

6を9で割った値を返します。

UWSC
結果
プレーンテキスト

精度を指定するにはprecisionプロパティを使います。精度を5桁に指定しています。

UWSC
結果
プレーンテキスト

丸めモードで丸め方を指定することもできます。デフォルトでは四捨五入ですが、以下ではDecimal.ROUND_FLOORで負の無限大方向へ丸めています。

UWSC
結果
プレーンテキスト

特殊値同士の計算結果は以下のようになります。

UWSC
結果
プレーンテキスト

dividedToIntegerBy関数

xをyで除算した整数部を返します。

UWSC
x必須
被除数となる数値、文字列もしくはDecimalインスタンス
y必須
除数となる数値、文字列もしくはDecimalインスタンス

12を5で除算した整数部を返します。

UWSC
結果
プレーンテキスト

equals関数

xとyが等しいかを示すブール値を返します。xとyが等しければTrue、等しくなければFalseを返します。

UWSC
x必須
比較する1つ目の数値、文字列もしくはDecimalインスタンス
y必須
比較する2つ目の数値、文字列もしくはDecimalインスタンス

1.0と1が等しいかを示すブール値を返します。表記が違っていても数値的に等しければTrueを返します。

UWSC
結果
プレーンテキスト

floor関数

xを負の無限大方向へ丸めた値を返します。

UWSC
x必須
丸め対象となる数値、文字列もしくはDecimalインスタンス

4.2を負の無限大方向へ丸めた値を求めます。

UWSC
結果
プレーンテキスト

-2.1を負の無限大方向へ丸めた値を求めます。

UWSC
結果
プレーンテキスト

greaterThan関数

xがyより大きいかを示すブール値を返します。xがyよりも大きければTrue、小さければFalseを返します。

UWSC
x必須
大小を比較する1つ目の数値、文字列もしくはDecimalインスタンス
y必須
大小を比較する2つ目の数値、文字列もしくはDecimalインスタンス

0.1が0.2より大きいかを示すブール値を返します。0.1 > 0.2は成り立たないのでFalseを返します。

UWSC
結果
プレーンテキスト

greaterThanOrEqualTo関数

xがy以上かを示すブール値を返します。xがyと等しいか、もしくは大きければTrue、そうでなければFalseを返します。

UWSC
x必須
大小を比較する1つ目の数値、文字列もしくはDecimalインスタンス
y必須
大小を比較する2つ目の数値、文字列もしくはDecimalインスタンス

0.3が0.2以上かを示すブール値を返します。0.3 >= 0.2が成り立つのでTrueを返します。

UWSC
結果
プレーンテキスト

hyperbolicCosine関数

双曲線余弦(ハイパボリック コサイン)を求めます。

UWSC
x必須
弧度法による角度を表す数値、文字列もしくはDecimalインスタンス

UWSC
結果
プレーンテキスト

UWSC
結果
プレーンテキスト

hyperbolicSine関数

双曲線正弦(ハイパボリック サイン)を求めます。

UWSC
x必須
弧度法による角度を表す数値、文字列もしくはDecimalインスタンス

UWSC
結果
プレーンテキスト

hyperbolicTangent関数

双曲線正接(ハイパボリック タンジェント)を求めます。

UWSC
x必須
弧度法による角度を表す数値、文字列もしくはDecimalインスタンス

UWSC
結果
プレーンテキスト

inverseCosine関数

逆余弦(アークコサイン)を求めます。

UWSC
x必須
弧度法による角度を表す数値、文字列もしくはDecimalインスタンス

UWSC
結果
プレーンテキスト

inverseHyperbolicCosine関数

逆双曲線余弦(アーク・ハイパボリック・コサイン)を求めます。

UWSC
x必須
弧度法による角度を表す数値、文字列もしくはDecimalインスタンス

inverseHyperbolicSine関数

逆双曲線正弦(アーク・ハイパボリック・サイン)を求めます。

UWSC
x必須
弧度法による角度を表す数値、文字列もしくはDecimalインスタンス

0ラジアンの逆双曲線正弦を求めます。

UWSC
結果
プレーンテキスト

inverseHyperbolicTangent関数

逆双曲線正接(アーク・ハイパボリック・タンジェント)を求めます。

UWSC
x必須
弧度法による角度を表す数値、文字列もしくはDecimalインスタンス

0ラジアンの逆双曲線正接を求めます。

UWSC
結果
プレーンテキスト

inverseSine関数

逆正弦(アークサイン)を求めます。

UWSC
x必須
弧度法による角度を表す数値、文字列もしくはDecimalインスタンス

0ラジアンの逆正弦を求めます。

UWSC
結果
プレーンテキスト

inverseTangent関数

逆正接(アークタンジェント)を求めます。

UWSC
x必須
弧度法による角度を表す数値、文字列もしくはDecimalインスタンス

0ラジアンの逆正接を求めます。

UWSC
結果
プレーンテキスト

isFinite関数

xが有限値かを示すブール値を返します。xが有限値であればTrue、有限値以外(NaN、INF、-INF)であればFalseを返します。

UWSC
x必須
有限値かを求める数値、文字列もしくはDecimalインスタンス

2が有限値かを求めます。

UWSC
結果
プレーンテキスト

-INFが有限値かを求めます。

UWSC
結果
プレーンテキスト

isInteger関数

xが整数かを示すブール値を返します。xが整数であればTrue、整数でなければFalseを返します。

UWSC
x必須
整数値かを求める数値、文字列もしくはDecimalインスタンス

256、256.0、3.14が整数かを求めます。

UWSC

isNaN関数

xが非数(NaN)かを示すブール値を返します。xが非数であればTrue、非数でなければFalseを返します。

UWSC
x必須
非数かを求める数値、文字列もしくはDecimalインスタンス

UWSC
結果
プレーンテキスト

UWSC
結果
プレーンテキスト

isNegative関数

xが負数かを示すブール値を返します。xが負数であればTrue、負数でなければFalseを返します。

UWSC
x必須
負数かを求める数値、文字列もしくはDecimalインスタンス

UWSC

isPositive関数

xが正数かを示すブール値を返します。xが正数であればTrue、正数でなければFalseを返します。

UWSC
x必須
正数かを求める数値、文字列もしくはDecimalインスタンス

UWSC

isZero関数

xが0かを示すブール値を返します。xが0であればTrue、0でなければFalseを返します。

UWSC
x必須
0かを求める数値、文字列もしくはDecimalインスタンス

lessThan関数

xがyよりも小さい値かを示すブール値を返します。xがyよりも小さい値であればTrue、それ以外であればFalseを返します

UWSC
x必須
大小を比較する1つ目の数値、文字列もしくはDecimalインスタンス
y必須
大小を比較する2つ目の数値、文字列もしくはDecimalインスタンス

lessThanOrEqualTo関数

xがy以下の値かを示すブール値を返します。xがy以下の値であればTrue、それ以外であればFalseを返します。

UWSC
x必須
大小を比較する1つ目の数値、文字列もしくはDecimalインスタンス
y必須
大小を比較する2つ目の数値、文字列もしくはDecimalインスタンス

logarithm関数

baseを底とする対数\(\log_{base}{x}\)を求めます。baseを省略した場合は、底をとする常用対数\(\log_{10}{x}\)を求めます。

UWSC
x必須
真数
base省略可
底(省略時は10)

\(\log_{2}{8}\)を求めます。

UWSC
結果
プレーンテキスト

\(\log_{10}{100}\)を求めます。baseは省略されているので10となります。

UWSC
結果
プレーンテキスト

minus関数

minuendからsubtrahendを引いた値を返します。

UWSC
minuend必須
被減数となる数値、文字列もしくはDecimalインスタンス
subtrahend必須
減数となる数値、文字列もしくはDecimalインスタンス

1.00から0.33を引いた値を返します。

UWSC
結果
プレーンテキスト

特殊値同士の計算結果は以下のようになります。

UWSC
結果
プレーンテキスト

modulo関数

xをyで割ったときのあまりを求めます。

UWSC
x必須
被除数となる数値、文字列もしくはDecimalインスタンス
y必須
除数となる数値、文字列もしくはDecimalインスタンス

19を5で割った余りを求めます。\(19 \div 5 = 3 \mod 4\)なので4を返します。

UWSC
結果
プレーンテキスト

1を0.3で割った余りを求めます。\(1 \div 0.3 = 3 \mod 0.1\)なので0.1を返します。

UWSC
結果
プレーンテキスト

-10.2を2で割った余りを求めます。\(-10.2 \div 2 = -5 \mod 0.2\)なので0.2を返します。

UWSC
結果
プレーンテキスト

negated関数

xの正負を反転した値を返します。

UWSC
x必須
正負を反転する数値、文字列もしくはDecimalインスタンス

1.5の正負を反転させます。

UWSC
結果
プレーンテキスト

-3.1の正負を反転させます。

UWSC
結果
プレーンテキスト

plus関数

augendにaddendを加えた値を返します。

UWSC
augend必須
被加数となる数値、文字列もしくはDecimalインスタンス
addend必須
加数となる数値、文字列もしくはDecimalインスタンス
pr省略可
有効桁数
rm省略可
丸めモード

0.1に0.2を加えた値を返します。

UWSC
結果
プレーンテキスト

特殊値同士の計算結果は以下のようになります。

UWSC
結果
プレーンテキスト

precision関数

xの有効桁数を返します。

UWSC
x必須
有効桁数を求める数値、文字列もしくはDecimalインスタンス
z省略可
末尾の0を有効桁数としてカウントするかを示すブール値

1.23の有効桁数を求めます。

UWSC
結果
プレーンテキスト

5640000の有効桁数を求めます。sdを省略した場合は末尾の0を有効桁数としてカウントしないため564の桁数である3を返します。sdにTrueを指定した場合は末尾の0も有効桁数としてカウントするため5640000全体の桁数である7を返します。

UWSC
結果
プレーンテキスト

round関数

丸めモードを使用しxを整数に丸めます。

UWSC
x必須
丸める数値、文字列もしくはDecimalインスタンス

10.4を丸めます。

UWSC
結果
プレーンテキスト

sine関数

xの正弦(斜辺と対辺の比)を求めます。xはラジアン単位で指定します。

UWSC
x必須
弧度法による角度を表す数値、文字列もしくはDecimalインスタンス

0ラジアンの正弦を求めます。

UWSC
結果
プレーンテキスト

squareRoot関数

xの平方根を返します。

UWSC
x必須
平方根を求める対象となる数値、文字列もしくはDecimalインスタンス

4の平方根を求めます。

UWSC
結果
プレーンテキスト

tangent関数

xの正接(底辺と対辺の比)を求めます。xはラジアン単位で指定します。

UWSC
x必須
弧度法による角度を表す数値、文字列もしくはDecimalインスタンス

45°の正接を求めます。

UWSC
結果
プレーンテキスト

times関数

multiplierにmultiplicandを掛けた値を返します。

UWSC
multiplier必須
被乗数となる数値、文字列もしくはDecimalインスタンス
multiplicand必須
乗数となる数値、文字列もしくはDecimalインスタンス

3.5に2を掛けた値を返します。

UWSC
結果
プレーンテキスト

特殊値同士の計算結果は以下のようになります。

UWSC
結果
プレーンテキスト

toBinary関数

10進数を2進数に変換します。

UWSC
x必須
2進数に変換する数値、文字列もしくはDecimalインスタンス
sd省略可
有効桁数
rm省略可
丸めモード

10進数の8を2進数に変換します。

UWSC
結果
プレーンテキスト

toDecimalPlaces関数

小数値を指定した桁、丸めモードで丸めます。

UWSC
x必須
丸め対象となる数値、文字列もしくはDecimalインスタンス
dp省略可
小数点以下の桁数
rm省略可
丸めモード(デフォルト:4の四捨五入)

8.125を小数点以下2桁に丸めます。

UWSC
結果
プレーンテキスト

8.125を小数点以下2桁に切り捨てで(0の方向へ)丸めます。

UWSC
結果
プレーンテキスト

toExponential関数

指数表記に変換します。

UWSC
x必須
数値、文字列もしくはDecimalインスタンス
dp省略可
小数点以下の桁数
rm省略可
丸めモード

256を指数表記に変換します。

UWSC
結果
プレーンテキスト

toFixed関数

小数点以下の数値を丸めます。

UWSC
x必須
数値、文字列もしくはDecimalインスタンス
dp省略可
小数点以下の桁数
rm省略可
丸めモード

12.3456を小数点以下0桁(整数)に丸めます。

UWSC
結果
プレーンテキスト

12.3456を小数点以下2桁に丸めます。

UWSC
結果
プレーンテキスト

-22.8を整数に丸めます。

UWSC
結果
プレーンテキスト

toFraction関数

xに指定された数値を既約分数にした配列を返します。配列の0番目が分子、1番目が分母となります。

UWSC
x必須
数値、文字列もしくはDecimalインスタンス
maxD省略可
最大分母

0.131を既約分数にした配列を返します。

UWSC
結果
プレーンテキスト

toFraction関数の戻り値を以下のようにJOIN関数 (スクリプト関数)で結合すると分数の形式にすることができます。0.131は131/1000で表すことができます。

UWSC
結果
プレーンテキスト

maxDを指定すると分母がその値を超えない範囲で表されます。

maxDに500を指定したことで131/1000で表されていた値が30/229となります。この値は小数に直すと0.131004366812227074となり誤差が発生します。

UWSC
結果
プレーンテキスト

toHexadecimal関数

10進数を16進数に変換します。

UWSC
x必須
数値、文字列もしくはDecimalインスタンス
sd省略可
精度
rm省略可
丸めモード

10進数の128を16進数に変換します。

UWSC
結果
プレーンテキスト

toNumber関数

x(Decimalインスタンス)を数値型に変換します。数値として表現できない部分は丸められる可能性があります。

UWSC
x必須
数値、文字列もしくはDecimalインスタンス

toOctal関数

10進数の値を8進数に変換します。

UWSC
x必須
8進数に変換する数値、文字列もしくはDecimalインスタンス
sd省略可
有効桁数
rm省略可
丸めモード

10進数の128を8進数に変換します。

UWSC
結果
プレーンテキスト

toPower関数

baseのexponent乗の値を計算します。

UWSC
base必須
底
exponent必須
指数

\(2^{10}\)を計算します。

UWSC
結果
プレーンテキスト

以下は\(2^{100}\)を求めるプログラムです。桁数が多くなる場合は指数表記となります。

UWSC
結果
プレーンテキスト

toPrecision関数

xをsd、rmで指定された有効桁数、丸めモードで丸めた値を文字列型で返します。

UWSC
x必須
丸める数値、文字列もしくはDecimalインスタンス
sd省略可
有効桁数
rm省略可
丸めモード

123.5を有効桁数2桁で丸めます。

UWSC
結果
プレーンテキスト

123.5を有効桁数2桁、丸めモードを0(無限大の方向)で丸めます。

UWSC
結果
プレーンテキスト

toSignificantDigits関数

xをsd、rmで指定された有効桁数、丸めモードで丸めた値のDecimalインスタンスを返します。

UWSC
x必須
丸める数値、文字列もしくはDecimalインスタンス
sd省略可
有効桁数
rm省略可
丸めモード

1234.567を有効桁数5桁に丸めます。

UWSC
結果
1234.6/result]

toString関数

xに指定されたDecimalインスタンスを文字列型に変換します。

UWSC
x必須
数値、文字列もしくはDecimalインスタンス

truncated関数

小数点以下を切り捨て、0の方向へ丸めます。

UWSC
x必須
丸める対象となる数値、文字列もしくはDecimalインスタンス

UWSC
123

valueOf関数

UWSC
x必須
[/login]

ヘルパー関数

digitsToString関数

配列dに格納されている値を整えて文字列として返します。配列の0番目を除く各要素をLOGBASEに定義されている桁数(デフォルト:7)になるまで0埋めして結合します。結合したあと末尾の0は削除します。

UWSC
d必須
結合する数字を格納した配列

以下は1/123456を計算する過程で出てくるdの値を例にしています。

配列の0番目を除く各要素(5184、331778、1234000)を7桁に0埋め(0005184、0331778、1234000)して結合します。

0番目の要素も含めて結合、末尾の0を取り除くと結果は81000518403317781234となります。

UWSC
結果
プレーンテキスト

convertBase関数

strに指定された文字列をbaseInの進数からbaseOutの進数に変換します

UWSC
str必須
進数変換する文字列
baseIn必須
変換前の進数
baseOut必須
変換後の進数

以下は16進数のFFを10進数に変換するプログラムです。

UWSC
結果
プレーンテキスト

2進数の0101を10進数に変換します。

UWSC
結果
プレーンテキスト

getPI関数

円周率をsd、rmに指定したの精度、丸めモードで返す。

UWSC
Ctor必須
sd必須
精度
rm必須
丸めモード(Rounding Mode)
UWSC
結果
プレーンテキスト

getZeroString関数

引数kに指定された値だけ0を結合した文字列を返します。

UWSC
k必須

UWSC
結果
プレーンテキスト

naturalExponential関数

ネイピア数\(e\)を底、xを指数とする\(e^{x}\)を求めます。

UWSC
x必須
指数を表す数値、文字列もしくはDecimalインスタンス
sd省略可

\(e^{1}\)を求めます。

UWSC
結果
プレーンテキスト

naturalLogarithm関数

ネイピア数\(e\)を底とした自然対数\(\log_{e}{y}\)を求めます。

UWSC
y必須
真数を表す数値、文字列もしくはDecimalインスタンス
sd省略可

nonFiniteToString関数

配列xの非有限値を文字列型に変換します。NaN、INF、-INFのいずれかの値を返します。

UWSC
x必須
非有限値か求める数値、文字列もしくはDecimalインスタンス

parseDecimal関数

引数strに指定された値を指数、仮数部の配列に変換し配列xに格納します。

parseDecimal関数を実行するよりも前に配列xに符号を示す値を格納しておく必要があります。

UWSC
x必須
数値、文字列もしくはDecimalインスタンス
str必須
\[ 符号 \times 仮数部 \times 10^{指数} \]

仮数部は\(1 \leq d < 10\)の範囲の値です。

Decimalモジュールでは配列の0番目に符号、1番目に指数、2番目以降に仮数部を格納しています。

以下はarrayに格納された値をparseDecimal関数で変換するプログラムです。

仮数部は小数点の位置を中心として7桁区切りで格納されます。7桁に満たない部分は0で残りの桁を埋めます。

UWSC
結果
CSV

tinyPow関数

\(b^{e}\)を求めます。

UWSC
b必須
底
e必須
指数

\(2^{10}\)を求めます。

UWSC
結果
プレーンテキスト

その他関数

compare関数(division)

aとbを比較し、aが大きければ1、bが大きければ-1、同じであれば0を返します。

UWSC
a必須
数値a
b必須
数値b
aL必須
数値aの長さ
bL必須
数値bの長さ

Constructor関数

vの数値を符号、指数、仮数部で構成される配列に変換します。符号は正数であれば1、負数であれば-1、仮数部はデフォルトでは7桁区切りの配列となります。

UWSC
v必須
数値

以下は12345を配列にするプログラムです。出力される値は1が符号、4が指数、12345が仮数部です。

UWSC
結果
プレーンテキスト

以下は-0.00225634を配列にするプログラムです。

vが負の値なので符号は-1、指数は-3、仮数部は22563、4000000となります。

UWSC
結果
プレーンテキスト

multiplyInteger関数(division)

整数同士の乗算を行うための関数です。引数xはセーフ配列、引数kは整数、引数baseは係数配列の基数を指定します。

UWSC
x必須
数値、文字列もしくはDecimalインスタンス
k必須
base必須

以下は123125000×5の計算を行うプログラムです。

Constructor関数で取得した配列xの0番目は符号、1番目は指数、2番目以降が仮数部が格納されていて符号と指数は不要なので、arrayShift関数 (自作関数)を2回実行して先頭2つの要素を削除します。

UWSC
結果
プレーンテキスト

自作関数

calculate関数

decimal.jsで複雑な計算を行う場合はメソッドチェーンで記述することができますが、UWSCではメソッドチェーンを定義できないので、その代わりとなる関数です。

UWSC
str必須
計算式
pr省略可
有効桁数
rm省略可
丸めモード

以下はcalculate関数で使える演算子です。

演算子記号説明
加算+2値を足し算する
減算-2値を引き算する
乗算*2値を掛ける
除算/2値を割る
整数除算//除算した整数部を返す
剰余%除算した余りを返す

以下はcalculate関数で使用できる関数です。

関数名説明
floor関数小数点以下を切り捨てる
ceil関数小数点以下を切り上げる

式を文字列で指定することでその計算結果を返します。

UWSC
結果
プレーンテキスト

calcRPN関数

toRPN関数で生成した逆ポーランド記法のトークン(token)から計算した結果を出力します。

UWSC
tokens必須
トークン
pr必須
有効桁数
rm必須
丸めモード

cmpPrecedence関数

UWSC
token1必須
token2必須

isOperator関数

引数tokenが演算子(+、-、*、/、%、^のいずれか)ならばTrueを返します。

UWSC
token必須
演算子かを調べる文字列

quotient関数

除算の商の整数部を返します。

UWSC
dividend必須
被除数
divisor必須
除数

tokenize関数

引数exprに指定された数式をトークンに分解した配列を生成します。

トークンとは意味のある最小単位の文字の並びのことで、tokenize関数では数式を数値、演算子、括弧に分割した配列を生成します。

UWSC
expr必須
文字列型の計算式

以下のプログラムは数式(123+456)*10をトークンに分割した配列の各要素を出力します。

UWSC
結果
プレーンテキスト

toRPN関数

tokenize関数で生成した配列を逆ポーランド記法(RPN)に変換します。

逆ポーランド記法とは、数式を記述する際に演算子を被演算子の後ろに記述する記法です。例えば普段使われる中置記法で2 + 3と書く数式を逆ポーランド記法では2 3 +と記述します。

演算子の優先順位を考慮する必要がなく、数式の評価を効率的に行うことができます。

UWSC
tokens必須
tokenize関数で生成した配列
pr省略可
有効桁数
rm省略可
丸めモード