数値関数 ​

このページは機械翻訳により提供されています。翻訳内容と英語版に相違がある場合は、英語版が優先されます。

数値関数は数値を丸め、数値をテストします。丸め関数は、1セント未満の差分で会計合計が異なる場合など、システム間の精度の不一致を防ぐのに役立ちます。

金額はFLOATではなくDECIMALとして丸める

round_placesおよびround_significantは、FloatではなくDecimalを受け取ります。これは、Floatでは0.1を正確に表現できないため、丸めが始まる前にすでに精度が失われているからです。

Decimal('12.50')などを使用して、境界で通貨金額をDecimalに変換し、変換全体を通してDecimal値として保持します。 Transform Dataアクションのスキーマ推論では、この変換は実行されません。

機能の提供状況

WELは現在、一部のお客様にご利用いただけます。ご利用のワークスペースで利用可能かどうかを確認するには、Customer Success Representativeにお問い合わせください。

整数に丸める ​

次の関数は、数値を最も近い整数、次の整数、または前の整数に丸めます。

round ​

最も近い整数に丸めます。

text
round(number)
パラメーター説明
number丸める数値。
中間点で切り上げる

次の例では、中間点で数値を切り上げます。

Formula

text
round(3.5)

出力

text
4
中間点未満で切り下げる

次の例では、中間点未満の場合に数値を切り下げます。

Formula

text
round(2.4)

出力

text
2

ceil ​

次の整数に切り上げます。

text
ceil(number)
パラメーター説明
number切り上げる数値。
小数に関係なく切り上げる

次の例では、小数に関係なく数値を切り上げます。

Formula

text
ceil(3.2)

出力

text
4

floor ​

前の整数に切り下げます。

text
floor(number)
パラメーター説明
number切り下げる数値。
小数に関係なく切り下げる

次の例では、小数に関係なく数値を切り下げます。

Formula

text
floor(3.9)

出力

text
3

精度に丸める ​

次の関数は、Decimalを固定の小数点以下の桁数または有効桁数に丸めます。

round_places ​

Decimalを指定された小数点以下の桁数に丸めます。

text
round_places(decimal, places, options)
パラメーター説明
decimal丸めるDecimal。
places保持する小数点以下の桁数。
options丸めモードを制御するオプションのマップ。
  • mode: 値が2つの結果のちょうど中間にある場合の丸め方法。
    • half_up(デフォルト): ゼロから離れる方向に丸めます。
    • half_even: 常に切り上げるのではなく、最も近い偶数桁に丸めるため、多数の行にわたって合計が上方にずれません。これを必要とするシステムと照合する場合、または合計がセント単位で異なる場合に使用します。
    • half_down、up、down、ceiling、floor: 標準の丸め方向。
    • exact: 値が要求された桁数に収まらない場合、丸めるのではなくエラーを発生させます。精度が暗黙的に失われることがバグになる場合に使用します。

認識されないオプションキーは無視されず、E222を発生させます。

デフォルトの丸め(half up)

次の例では、デフォルトのhalf-upモードを使用して丸めます。

Formula

text
round_places(Decimal('11.545'), 2)

出力

text
11.55
銀行丸め(half to even)

次の例では、銀行丸めのhalf to evenを使用して丸めます。

Formula

text
round_places(Decimal('11.545'), 2, {mode: 'half_even'})

出力

text
11.54
floorモードを使用して丸める

次の例では、floorモードを使用して丸めます。

Formula

text
round_places(Decimal('11.545'), 2, {mode: 'floor'})

出力

text
11.54

round_significant ​

Decimalを、小数点以下の桁数ではなく有効桁数に丸めます。パディングは行いません。

text
round_significant(decimal, digits, options)
パラメーター説明
decimal丸めるDecimal。
digits保持する有効桁数。
optionsround_placesと同じmode値を含むオプションのマップ。
3有効桁数に丸める

次の例では、数値を3有効桁数に丸めます。

Formula

text
round_significant(Decimal('1234.5'), 3)

出力

text
1230

ユースケース: 各請求書明細をセント単位に丸める ​

単価は小数点以下3桁で届きますが、宛先の会計システムでは2桁のみ受け付けます。 round_placesを使用して、各請求書明細を小数点以下2桁に丸めます。

入力

json
{
  "lines": [
    {"sku": "WID-1", "unit_price": "12.335", "qty": 3},
    {"sku": "GAD-7", "unit_price": "99.005", "qty": 1}
  ]
}

Formula

text
_.lines >> map_by(l ~> {
  sku: l.sku,
  total: round_places(Decimal(l.unit_price) * l.qty, 2)
})

出力

json
[
  {"sku": "WID-1", "total": 37.01},
  {"sku": "GAD-7", "total": 99.01}
]

価格は最初からDecimalのまま保持されるため、乗算は正確で、最後の丸めでのみ何らかの損失が発生します。代わりに最初にFloat読み取りを行うと、2回丸めが行われ、2回目の丸めはすでに近似値になっている数値に適用されます。

絶対値 ​

次の関数は、符号を破棄して数値の大きさを返します。

abs ​

符号を破棄して、数値の大きさを返します。 Durationも受け付けます。

text
abs(value)
パラメーター説明
valueNumberまたはDuration。
負の数値の絶対値

次の例では、負の数値の絶対値を返します。

Formula

text
abs(-42)

出力

text
42

数値をテストする ​

次の関数は、通常の数値と特別なFloat値を区別します。数値以外の引数は、falseを返すのではなくE100を発生させます。

finite? ​

通常の数値であるInteger、Decimal、またはFloatの場合、trueを返します。

text
finite?(number)
パラメーター説明
numberテストする数値。
通常のfloatは有限

次の例では、通常のfloatをテストします。

Formula

text
finite?(1.0)

出力

text
true
Infinityは有限ではない

次の例では、正の無限大をテストします。

Formula

text
finite?(Float('Infinity'))

出力

text
false

infinite? ​

値が正の無限大または負の無限大の場合、trueを返します。

text
infinite?(number)
パラメーター説明
numberテストする数値。
正の無限大を検出する

次の例では、正の無限大をテストします。

Formula

text
infinite?(Float('Infinity'))

出力

text
true

nan? ​

値がFloatの"数値ではない"である場合、trueを返します。

text
nan?(number)
パラメーター説明
numberテストする数値。
通常の数値はNaNではない

次の例では、通常の数値をテストします。

Formula

text
nan?(1.0)

出力

text
false

これらの値はゼロ除算からは発生しない

ゼロで除算すると、無限大を生成するのではなくE200が発生するため、WEL式が暗黙的に無限大を生成することはありません。 InfinityおよびNaNは、それらを許可するシステムからデータが届いた場合に表示されます。 present?はすでに両方を存在しないものとして扱うため、presenceフォールバックは明示的なチェックなしでそれらを検出します。

ビット幅 ​

次の関数は、整数の表現に必要なビット数を測定します。

int_bit_size ​

ビット補数エンコードで整数を表現するために必要なビット数を返します。

text
int_bit_size(integer)
パラメーター説明
integer測定する整数。
255に必要なビット数

次の例では、255に必要なビット数を測定します。

Formula

text
int_bit_size(255)

出力

text
9

最終更新日: