WEBVTT

1
00:00:00.000 --> 00:00:01.050
こんにちは。

2
00:00:01.050 --> 00:00:03.850
今回はマスのフロアを紹介します。

3
00:00:03.850 --> 00:00:10.151
これは、数値を負の無限大方向へ丸める、つまり切り捨てる静的メソッドです。

4
00:00:10.151 --> 00:00:17.501
床という意味の名前の通り、小数部分が少しでもあれば、ひとつ下の整数まで引き下げます。

5
00:00:17.501 --> 00:00:25.376
この動画では、書き方と引数、記事の基本例であるグループ数の計算、正の数と負の数の動き、

6
00:00:25.376 --> 00:00:33.252
時間やポイントへの実例、自動変換の注意、そして浮動小数点の誤差まで、実行結果と一緒に学びます。

7
00:00:33.252 --> 00:00:41.302
切り上げのシーリング、四捨五入のラウンドとセットで覚えると、丸めの使い分けがはっきりします。

8
00:00:41.302 --> 00:00:48.128
余りを除いて、確実に使える分だけを数えたい場面で、特に頼りになるメソッドです。

9
00:00:48.128 --> 00:00:55.828
数直線で左隣の整数を探す、というイメージを持つと、正の数でも負の数でも迷わずに済みます。

10
00:00:55.828 --> 00:00:57.775
まず動作環境を確認します。

11
00:00:57.775 --> 00:01:02.867
フロアはマスオブジェクトに最初から備わる、歴史のとても長い機能です。

12
00:01:02.867 --> 00:01:09.756
クロームとファイアーフォックスでは一以降、サファリでは一以降、エッジでは十二以降で使えます。

13
00:01:09.756 --> 00:01:15.297
アンドロイド版クロームでは十八以降、アイオーエス版サファリでは一以降です。

14
00:01:15.297 --> 00:01:20.389
ノード・ジェイエスではゼロ・十・ゼロという古い版から対応しています。

15
00:01:20.389 --> 00:01:24.733
記事の互換性情報はエムディーエヌのデータに基づく目安です。

16
00:01:24.733 --> 00:01:29.675
現在使われている環境であれば、ほぼどこでもそのまま使えるでしょう。

17
00:01:29.675 --> 00:01:35.216
追加の読み込みは不要で、関数として備わっていることを実機でも確認済みです。

18
00:01:35.216 --> 00:01:36.722
書き方を確認します。

19
00:01:36.722 --> 00:01:40.637
マスのあとにドットを書き、フロアとカッコを続けます。

20
00:01:40.637 --> 00:01:43.198
引数は丸めたい数値が一つだけです。

21
00:01:43.198 --> 00:01:46.210
戻り値は、その引数以下の最大の整数です。

22
00:01:46.210 --> 00:01:53.890
スライドの例では、四・九が四に切り捨てられ、すでに整数の四はそのまま四で返ることを実機で確認しました。

23
00:01:53.890 --> 00:01:57.504
ポイントは、小数部分の大きさは関係ないことです。

24
00:01:57.504 --> 00:02:02.775
ゼロ・一でもゼロ・九でも、少しでも小数部分があれば下の整数になります。

25
00:02:02.775 --> 00:02:09.853
変数を渡しても、割り算のような計算式を渡しても、その結果である数値が切り捨ての対象になります。

26
00:02:09.853 --> 00:02:12.564
まずはこの基本の形を覚えてください。

27
00:02:12.564 --> 00:02:14.510
記事の基本例を見ます。

28
00:02:14.510 --> 00:02:19.818
十七割る五の結果をフロアで切り捨てる、とても短いコードです。

29
00:02:19.818 --> 00:02:24.418
実行結果は三で、ノードの実機結果とも一致しています。

30
00:02:24.418 --> 00:02:29.460
十七割る五は三・四ですが、十七個を五個ずつ分けると、完全なグループは三つで、

31
00:02:29.460 --> 00:02:34.502
余りの二個は一グループにはなりません。

32
00:02:34.502 --> 00:02:37.864
そのためグループ数は三になるわけです。

33
00:02:37.864 --> 00:02:42.818
記事でもこの、完全なグループ数の場面が想定されています。

34
00:02:42.818 --> 00:02:53.433
まずはこの例をブラウザーのコンソールかノードで実行し、個数を十五に変えると割り切れて三になることも確かめてみてください。

35
00:02:53.433 --> 00:02:57.856
予測してから実行する流れが、理解を深める近道です。

36
00:02:57.856 --> 00:03:00.187
正の数の動きを詳しく見ます。

37
00:03:00.187 --> 00:03:04.017
四・一も四・九も、結果はどちらも四になります。

38
00:03:04.017 --> 00:03:10.179
ゼロ・五はゼロに、十二・一も十二・九も十二になることを実機で確認しました。

39
00:03:10.179 --> 00:03:16.673
ラウンドが近い方の整数を選ぶのに対して、フロアは常に小さい方の整数を選びます。

40
00:03:16.673 --> 00:03:25.166
小数部分がどれほど大きくても切り捨てるため、完成した分や使える分だけを数えるときに過大な数が出ません。

41
00:03:25.166 --> 00:03:30.828
逆に、必要量を計算するときに切り捨てると不足することがあるため、どちらの方向へ丸めるべきかは、

42
00:03:30.828 --> 00:03:36.489
業務のルールに合わせて選ぶ必要があります。

43
00:03:36.489 --> 00:03:40.319
方向を決めるメソッドだ、と覚えておきましょう。

44
00:03:40.319 --> 00:03:44.566
例えば材料が二十三・九個分あっても、完成品として数えられるのは二十三個、

45
00:03:44.566 --> 00:03:48.812
というのが切り捨ての発想です。

46
00:03:48.812 --> 00:03:51.505
負の数の切り捨てを確認します。

47
00:03:51.505 --> 00:03:55.814
記事の境界例であるマイナス一・二の結果は、マイナス一ではなくマイナス二で、

48
00:03:55.814 --> 00:04:00.123
実機とも一致しました。

49
00:04:00.123 --> 00:04:03.534
マイナス四・七はマイナス五になります。

50
00:04:03.534 --> 00:04:10.177
負の無限大方向とは、数直線で左方向、つまりゼロから遠ざかる方向のことです。

51
00:04:10.177 --> 00:04:15.024
そのため負の数では、見た目には切り上げに近く見えます。

52
00:04:15.024 --> 00:04:20.949
マイナスゼロ・五の結果もマイナス一になることを実機で確認しました。

53
00:04:20.949 --> 00:04:25.617
小数部分を単純に取り除くトランクではマイナス一・二がマイナス一になるため、

54
00:04:25.617 --> 00:04:30.285
負の数では結果が食い違います。

55
00:04:30.285 --> 00:04:39.800
負の温度や差分を扱うときは、絶対値で考える癖を外し、数直線の左方向へ進むイメージで結果を予測してください。

56
00:04:39.800 --> 00:04:43.032
ここが最も間違えやすいポイントです。

57
00:04:43.032 --> 00:04:46.202
グループ数の計算を、個数を変えて確かめます。

58
00:04:46.202 --> 00:04:54.848
ゼロ個ならゼログループ、十五個なら割り切れて三グループ、十七個でも余りを除いて三グループになることを実機で確認しました。

59
00:04:54.848 --> 00:05:01.621
割り算の結果がちょうど整数のときは切り捨てても値は変わらず、余りがあるときだけ端数が落ちます。

60
00:05:01.621 --> 00:05:06.809
記事が対比する通り、余りを含めて必要な数を出すならシーリングが適します。

61
00:05:06.809 --> 00:05:10.484
例えば余った二個も入れる箱が必要なら切り上げ、完成した組だけを数えるなら切り捨て、

62
00:05:10.484 --> 00:05:14.158
という使い分けです。

63
00:05:14.158 --> 00:05:18.265
一覧のページ数とは逆の代表例なので、総個数を一グループの個数で割って切り捨てる、

64
00:05:18.265 --> 00:05:22.372
という型として覚えておきましょう。

65
00:05:22.372 --> 00:05:25.207
もう二つ、実務に近い実例を見ます。

66
00:05:25.207 --> 00:05:26.708
一つ目は時間です。

67
00:05:26.708 --> 00:05:31.629
百二十五秒を六十秒単位で数えると二・ゼロ八となり、完全に経過した分だけを数える場面では、

68
00:05:31.629 --> 00:05:36.549
二分として扱う計算になります。

69
00:05:36.549 --> 00:05:38.383
二つ目はポイントです。

70
00:05:38.383 --> 00:05:43.887
千二百五十を百で割って切り捨てると十二になり、百円ごとに一点というルールで、

71
00:05:43.887 --> 00:05:49.391
端数を除いたポイント数が求まることを実機で確認しました。

72
00:05:49.391 --> 00:05:54.145
在庫や完成品のように、達していない分を数に入れると困るものを数えるときは、

73
00:05:54.145 --> 00:05:58.898
この切り捨ての考え方がそのまま使えます。

74
00:05:58.898 --> 00:06:03.568
確実に言える分だけを数える、という目的が共通しています。

75
00:06:03.568 --> 00:06:11.240
単位を変えたくなった場合でも、割り算の数字を変えるだけで対応できる、汎用性の高い書き方です。

76
00:06:11.240 --> 00:06:15.118
引数が数値以外の場合の動きも知っておきましょう。

77
00:06:15.118 --> 00:06:20.288
数値の形をした文字列は、自動で数値に変換されて切り捨てられます。

78
00:06:20.288 --> 00:06:25.781
スライドの例では、文字列の四・九が四になることを実機で確認しました。

79
00:06:25.781 --> 00:06:29.013
ヌルはゼロとして扱われ、結果はゼロです。

80
00:06:29.013 --> 00:06:37.253
一方、数値にできない文字列を渡すと結果はナンという特別な値になり、引数を省略した場合もナンになります。

81
00:06:37.253 --> 00:06:41.130
無限大を渡した場合は、そのまま無限大が返ります。

82
00:06:41.130 --> 00:06:45.735
自動変換に頼ると意図しない結果を招くことがあるため、実務では渡す前に自分で数値へ変換し、

83
00:06:45.735 --> 00:06:50.340
検証しておく方が安全です。

84
00:06:50.340 --> 00:06:52.122
注意点を二つ挙げます。

85
00:06:52.122 --> 00:06:54.551
一つ目は浮動小数点の誤差です。

86
00:06:54.551 --> 00:07:02.488
計算の結果が本来はちょうど三のはずでも、内部では二・九九九とわずかに小さい値になることがあります。

87
00:07:02.488 --> 00:07:09.290
その値を切り捨てると二になってしまい、スライドの例でもその動きを実機で確認しました。

88
00:07:09.290 --> 00:07:13.825
境界ぎりぎりの計算ほど、誤差の影響を受けやすくなります。

89
00:07:13.825 --> 00:07:15.769
二つ目は丸める時点です。

90
00:07:15.769 --> 00:07:20.952
途中の計算のたびに切り捨てると、結果が必要以上に小さくなります。

91
00:07:20.952 --> 00:07:25.811
計算は小数のまま進め、最後に一度だけ切り捨てるのが基本です。

92
00:07:25.811 --> 00:07:31.480
金額や在庫のように数が重要な場面では、この二点を先に確認してください。

93
00:07:31.480 --> 00:07:32.363
まとめです。

94
00:07:32.363 --> 00:07:38.099
フロアは、数値を負の無限大方向へ丸め、引数以下の最大の整数を返すメソッドです。

95
00:07:38.099 --> 00:07:40.011
判断のポイントは三つです。

96
00:07:40.011 --> 00:07:48.836
まず、小数部分が少しでもあればひとつ下の整数になるため、グループ数やポイントのように確実な分だけを数える計算に向くこと。

97
00:07:48.836 --> 00:07:54.572
次に、負の数ではゼロから遠い方向へ進み、マイナス一・二がマイナス二になること。

98
00:07:54.572 --> 00:08:00.897
そして、浮動小数点の誤差が境界に影響するため、丸めるのは最後に一度だけにすることです。

99
00:08:00.897 --> 00:08:06.927
切り上げたいときはシーリング、近い方へ丸めたいときはラウンドと使い分けてください。

100
00:08:06.927 --> 00:08:12.810
まずは記事の基本例をコンソールで実行し、個数を変えて結果を予測してみてください。

101
00:08:12.810 --> 00:08:14.134
お疲れさまでした。

102
00:08:14.134 --> 00:08:20.900
迷ったときは、余りを数に入れるべきかどうかを基準に、切り捨てかどうかを判断してみてください。
