LoginSignup
0
0

More than 3 years have passed since last update.

fluorite-7 日本語チュートリアル Part 2 算術の基礎

Last updated at Posted at 2020-06-20

チュートリアルトップ

←前回 次回→

このパートでは、数値の基本的な扱い方法について扱います。

レッスン1 数値リテラル

0から9までの数字の塊は整数リテラルです。

$ fl7 '123456'
123456

先頭が0で始まっても10進数です。

$ fl7 '0123456'
123456

ピリオド.が1個数字列の間に挟まった数字の塊は小数リテラルです。
小数リテラルは浮動小数点数を生み出します。

$ fl7 '00003.140000'
3.14

末尾にeもしくはEに続いて整数が書かれたものは指数リテラルです。
指数リテラルも浮動小数点数を生み出します。

$ fl7 '00003.140000E100'
3.14e+100

$ fl7 '00003.140000e-100'
3.14e+-00

$ fl7 '00003.140000e+000100'
3.14e+100

レッスン2 丸括弧

括弧演算子( )は、囲んだ内部のひとまとまりの式を表します。
括弧演算子は式の区切りを明確にするだけで、(この時点では)特別な効果は何も効果はありません。
式の区切りを与える効果はしばしば「先に計算する」のように表現されます。

$ fl7 '(00003.140000)'
3.14

括弧演算子は同じ対象に好きなだけ大量に書けます。

$ fl7 '(((((00003.140000)))))'
3.14

レッスン3 符号

前置+および-符号の演算子です。

+は数値に対しては特に何もせず、-は数値を負にします。

$ fl7 '+00003.140000'
3.14

$ fl7 '-00003.140000'
-3.14

符号は数値リテラル以外に対しても書けます。
その場合も効果は概ね変わりません。

$ fl7 '-(00003.140000)'
-3.14

$ fl7 '-(-(00003.140000))'
3.14

符号は同じ対象に大量に書けます。

$ fl7 '+-++-+---+--++-+-++--+-00003.140000'
3.14

この場合、符号列の右から順に効果を適用します。
数値の3.14に対してまず-で符号を反転させ、次に+で何もせず、2連続の-の効果で符号を2回逆転させ、以降同様の処理を残りの全ての符号に対して適用します。

レッスン4 四則演算

中置+ - * /演算子は、それぞれ加算減算乗算除算です。
整数同士の除算は小数になります。

$ fl7 '1 + 2'
3

$ fl7 '1 - 2'
-1

$ fl7 '1 * 2'
2

$ fl7 '1 / 2'
0.5

演算子には結合の優先度があり、乗除算は加減算よりも先にまとまります。

$ fl7 '1 + 2 * 10'
21

$ fl7 '1 + (2 * 10)'
21

$ fl7 '(1 + 2) * 10'
30

また、四則演算においては、同じ結合優先度の演算子同士は左から順にまとまります(左優先結合)。

$ fl7 '1 - 2 - 3'
-4

$ fl7 '(1 - 2) - 3'
-4

$ fl7 '1 - (2 - 3)'
2

レッスン5 べき乗

fluorite-7では、べき乗を中置^で表現します。

$ fl7 '2 ^ 8'
256

べき乗演算子は乗除算演算子よりも結合優先度が高く、かつ右優先結合です。

$ fl7 '10 * 2 ^ 2 ^ 3 * 10'
25600

$ fl7 '10 * (2 ^ (2 ^ 3)) * 10'
25600

fluorite-7では、すべての前置演算子は、すべての中置演算子よりも結合優先度が高いです。
これはべき乗よりも符号が優先されることを意味します。

$ fl7 '-2 ^ 4'
16

$ fl7 '(-2) ^ 4'
16

$ fl7 '-(2 ^ 4)'
-16

これは数学の式や他のいくつかの言語と異なり、Excelと似ています。

$ perl -E 'say -2 ** 4'
-16

image.png

image.png

レッスン6 剰余

中置%剰余演算子です。
剰余演算子は乗除算演算子と同優先度です。
細かい仕様はJavaScriptの同演算子に従います。

$ fl7 '10 % 3'
1

$ fl7 '10.5 % 3.33'
0.5099999999999998

$ fl7 '-10.5 % 3.33'
-0.5099999999999998

$ fl7 '-10.5 % -3.33'
-0.5099999999999998

$ fl7 '10.5 % -3.33'
0.5099999999999998

$ fl7 '10.5 - 3.33 * 3'
0.5099999999999998

レッスン7 無限大と非数

いくつかの数値を扱う演算では、入力次第で結果が無限大INFINITYや非数NANとなります。

$ fl7 '1 / 0'
INFINITY

$ fl7 '0 / 0'
NAN

$ fl7 '-1 / 0'
-INFINITY

fluorite-7では整数を整数の0で割ってもゼロ除算エラーにはなりません。


これらの値が直接欲しい場合は、INFINITYNANと記述します。

$ fl7 'INFINITY'
INFINITY

$ fl7 'NAN'
NAN

$ fl7 '-INFINITY'
-INFINITY

fluorite-7では未定義識別子は同内容の文字列になるので、これだけでは分かりませんね。
ではTYPE関数を先取りして「値の型」を見てみましょう。

$ fl7 'TYPE(INFINITY)'
NUMBER

$ fl7 'TYPE(NAN)'
NUMBER

$ fl7 'TYPE(-INFINITY)'
NUMBER

$ fl7 'TYPE(INFINITYYYYY)'
STRING

$ fl7 'TYPE(NaN)'
STRING

INFINITYNANだけが数値で、他は文字列として出力されていることが分かります。

まとめ

  • 数値リテラルがある。
  • 式を括弧で囲える。
  • 符号・四則演算・剰余・べき乗ができる。
  • 整数同士の/は小数になる。
  • 前置演算子は中置演算子より優先される。
  • 0除算はINFINITYやNANになる。

Part 3

次回→

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0