WEBVTT

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

2
00:00:00.939 --> 00:00:03.601
今回はマスのラウンドを紹介します。

3
00:00:03.601 --> 00:00:08.140
これは、数値を最も近い整数へ丸めてくれる静的メソッドです。

4
00:00:08.140 --> 00:00:16.594
いわゆる四捨五入に近い働きで、計測値や平均点など、小数を含む値を表示用の整数にそろえたい場面でよく使います。

5
00:00:16.594 --> 00:00:21.603
この動画では、書き方と引数、記事の基本例、ちょうど半分のときの扱い、負の数の丸め、

6
00:00:21.603 --> 00:00:26.613
小数点以下の桁で丸める工夫、平均や金額への実例、そして浮動小数点の誤差への注意まで、

7
00:00:26.613 --> 00:00:31.622
実行結果と一緒に学びます。

8
00:00:31.622 --> 00:00:33.970
まずは全体像をつかみましょう。

9
00:00:33.970 --> 00:00:40.702
切り捨てのフロア、切り上げのシーリングとセットで覚えると、使い分けがしやすくなります。

10
00:00:40.702 --> 00:00:49.468
小数部分を見て近い方の整数を選ぶ、という単純なルールだからこそ、境目での決まりを正確に知っておくことが大切です。

11
00:00:49.468 --> 00:00:51.165
まず動作環境を確認します。

12
00:00:51.165 --> 00:00:55.734
ラウンドはマスオブジェクトに最初から備わる、歴史のとても長い機能です。

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

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

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

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

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

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

19
00:01:23.930 --> 00:01:28.760
迷ったときは、対象の環境で小さいコードを一度実行して確かめるのが確実です。

20
00:01:28.760 --> 00:01:30.477
書き方を確認します。

21
00:01:30.477 --> 00:01:35.111
マスのあとにドットを書き、ラウンドとカッコを続けます。

22
00:01:35.111 --> 00:01:38.030
引数は丸めたい数値が一つだけです。

23
00:01:38.030 --> 00:01:43.523
複数の値を並べるマックスとは違い、一度に扱うのは一つの数値です。

24
00:01:43.523 --> 00:01:46.784
戻り値は、その数値に最も近い整数です。

25
00:01:46.784 --> 00:01:53.136
スライドの例では、三・七が四に、三・二が三になることを実機で確認しました。

26
00:01:53.136 --> 00:02:00.345
小数部分がゼロ・五ちょうどの場合は、正の無限大側、つまり大きい方の整数が選ばれます。

27
00:02:00.345 --> 00:02:05.495
この半分の場合の決まりが、後の負の数の話にも関わってきます。

28
00:02:05.495 --> 00:02:08.585
まずはこの基本の形を覚えてください。

29
00:02:08.585 --> 00:02:15.108
変数を渡しても、計算式を渡しても、その結果である数値が丸めの対象になります。

30
00:02:15.108 --> 00:02:16.641
記事の基本例を見ます。

31
00:02:16.641 --> 00:02:20.684
十二・六をラウンドで丸めて表示する、とても短いコードです。

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

33
00:02:24.448 --> 00:02:29.328
十二・六は、十二よりも十三に近いため、近い方の十三が選ばれたわけです。

34
00:02:29.328 --> 00:02:33.649
記事では、計測値の表示を整数にそろえる場面が想定されています。

35
00:02:33.649 --> 00:02:41.735
まずはこの例をブラウザーのコンソールかノードで実行し、入力を十二・四に変えたら十二になることも確かめてみてください。

36
00:02:41.735 --> 00:02:45.638
自分で予測してから実行する流れが、理解を深める近道です。

37
00:02:45.638 --> 00:02:49.960
なお、すでに整数の値を渡した場合は、そのまま同じ値が返ります。

38
00:02:49.960 --> 00:02:52.554
四捨五入の境目を詳しく見ます。

39
00:02:52.554 --> 00:03:00.163
正の数では、小数部分がゼロ・四以下なら切り捨て側、ゼロ・五以上なら切り上げ側に寄ります。

40
00:03:00.163 --> 00:03:08.637
スライドの通り、十二・四は十二に、十二・五は十三に、十二・六も十三になることを実機で確認しました。

41
00:03:08.637 --> 00:03:14.862
特に十二・五のような、ちょうど半分の値が上の整数になる点がポイントです。

42
00:03:14.862 --> 00:03:19.704
学校で習う四捨五入の感覚と、正の数の範囲では一致します。

43
00:03:19.704 --> 00:03:27.486
ただし、この半分の扱いは負の数では少し直感とずれるため、次のセクションで改めて確認します。

44
00:03:27.486 --> 00:03:31.636
境目の値ほど、先に小さい例で試す習慣が大切です。

45
00:03:31.636 --> 00:03:39.764
四捨五入という名前の通り、五以上は切り上げ、四以下は切り捨て、と覚えると分かりやすいでしょう。

46
00:03:39.764 --> 00:03:41.726
負の数の丸めを確認します。

47
00:03:41.726 --> 00:03:46.858
マイナス一・四はマイナス一に、マイナス一・六はマイナス二になります。

48
00:03:46.858 --> 00:03:49.575
ここまでは近い方を選ぶ感覚通りです。

49
00:03:49.575 --> 00:03:56.820
注意が必要なのは、ちょうど半分のマイナス一・五で、結果はマイナス二ではなくマイナス一になります。

50
00:03:56.820 --> 00:04:01.046
記事の境界例でもこの結果が示され、実機とも一致しました。

51
00:04:01.046 --> 00:04:07.235
理由は、半分の場合は常に正の無限大側、つまり数直線で右側の整数が選ばれるためです。

52
00:04:07.235 --> 00:04:12.216
なおマイナスゼロ・五の結果はマイナスゼロという特殊な値になります。

53
00:04:12.216 --> 00:04:17.348
負の温度や差分を扱うときは、この半分の決まりを必ず意識してください。

54
00:04:17.348 --> 00:04:24.744
学校で習う四捨五入では負の半分も大きさで考えることが多いため、ここは特に間違えやすいポイントです。

55
00:04:24.744 --> 00:04:32.065
ラウンドは整数への丸め専用ですが、掛け算と割り算を組み合わせると、好きな桁で丸められます。

56
00:04:32.065 --> 00:04:38.247
たとえば小数第二位まで残したい場合は、百倍してからラウンドし、百で割ります。

57
00:04:38.247 --> 00:04:45.243
スライドの例では、十二・五六七をこの方法で十二・五七にできることを実機で確認しました。

58
00:04:45.243 --> 00:04:50.124
十倍すれば小数第一位まで、千倍すれば小数第三位まで残せます。

59
00:04:50.124 --> 00:04:55.655
考え方はシンプルで、丸めたい桁を一時的に整数の位置へずらすだけです。

60
00:04:55.655 --> 00:05:02.651
ただし、この方法には浮動小数点の誤差が絡む場合があり、注意点として後ほど取り上げます。

61
00:05:02.651 --> 00:05:09.484
割合や割引率のように、小数第二位までで十分な表示が多い場面でよく使うテクニックです。

62
00:05:09.484 --> 00:05:12.291
実務に近い実例を二つ見ます。

63
00:05:12.291 --> 00:05:14.296
一つ目は平均点です。

64
00:05:14.296 --> 00:05:25.524
八十二、九十一、七十七の平均は八十三・三三と割り切れないため、ラウンドで八十三という表示用の整数にそろえました。

65
00:05:25.524 --> 00:05:27.729
二つ目は税込価格です。

66
00:05:27.729 --> 00:05:37.353
二千九百八十円に消費税率を掛けた結果を丸めると、三千二百七十八円になることを実機で確認しました。

67
00:05:37.353 --> 00:05:45.573
どちらも、計算そのものは小数で行い、最後の表示や確定の段階で整数へ丸める流れです。

68
00:05:45.573 --> 00:05:53.192
丸めるタイミングをどこに置くかで結果が変わる点は、次の注意にもつながります。

69
00:05:53.192 --> 00:05:57.663
引数が数値以外の場合の動きも知っておきましょう。

70
00:05:57.663 --> 00:06:03.251
数値の形をした文字列は、自動で数値に変換されて丸められます。

71
00:06:03.251 --> 00:06:09.957
スライドの例では、文字列の十二・六が十三になることを実機で確認しました。

72
00:06:09.957 --> 00:06:12.565
ヌルはゼロとして扱われます。

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

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

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

76
00:06:31.659 --> 00:06:36.968
検証しておく方が安全です。

77
00:06:36.968 --> 00:06:43.860
入力がフォーム由来の文字列の場合は、特にこの変換の有無を意識してください。

78
00:06:43.860 --> 00:06:45.953
注意点を二つ挙げます。

79
00:06:45.953 --> 00:06:48.808
一つ目は浮動小数点の誤差です。

80
00:06:48.808 --> 00:06:55.088
たとえば一・ゼロゼロ五を百倍すると、内部では百・四九九とわずかに小さい値になり、

81
00:06:55.088 --> 00:07:01.368
ラウンドしても一・ゼロ一にならず一のままになります。

82
00:07:01.368 --> 00:07:05.174
スライドと実機で確認した通りの結果です。

83
00:07:05.174 --> 00:07:10.883
金額の厳密な計算では、この誤差を前提に対策を考えてください。

84
00:07:10.883 --> 00:07:13.166
二つ目は集計の順番です。

85
00:07:13.166 --> 00:07:21.730
一件ずつ丸めてから合計する場合と、合計してから丸める場合では、結果が変わることがあります。

86
00:07:21.730 --> 00:07:25.726
記事でも規則の統一が呼びかけられています。

87
00:07:25.726 --> 00:07:30.483
チームや仕様で丸める時点を先に決めておきましょう。

88
00:07:30.483 --> 00:07:39.808
誤差が問題になる金額計算では、小数を使わず整数の単位で扱うなど、設計段階の工夫も検討してください。

89
00:07:39.808 --> 00:07:40.726
まとめです。

90
00:07:40.726 --> 00:07:44.705
ラウンドは、数値を最も近い整数へ丸めるメソッドです。

91
00:07:44.705 --> 00:07:46.695
判断のポイントは三つです。

92
00:07:46.695 --> 00:07:54.500
まず、ちょうど半分の場合は正の無限大側が選ばれるため、負の数ではマイナス一・五がマイナス一になること。

93
00:07:54.500 --> 00:08:00.162
次に、小数以下の桁で丸めたいときは、掛けてから丸めて割る方法が使えること。

94
00:08:00.162 --> 00:08:06.437
そして、浮動小数点の誤差と、集計の前後どちらで丸めるかの規則を先に決めることです。

95
00:08:06.437 --> 00:08:12.252
切り捨てたいときはフロア、切り上げたいときはシーリングと使い分けてください。

96
00:08:12.252 --> 00:08:19.139
まずは記事の基本例をコンソールで実行し、入力を一か所ずつ変えて結果を予測してみてください。

97
00:08:19.139 --> 00:08:20.516
お疲れさまでした。
