Help us understand the problem. What is going on with this article?

SwiftにFloat系の余り演算メソッドが2つある理由

More than 3 years have passed since last update.

前回、SwiftのFloat系の余りの%演算子が廃止になり、その代わりに2つのメソッドを使うようになったという記事を書きました。
Float系の演算で余り演算子(%)が廃止、それに変わるメソッドはだるま落としと最寄駅

しかし、整数の方は引き続き%演算子があり、2つのメソッドも使えないのでそれがなぜかという疑問を書いたところ、以下のメール(?)の紹介を受けました(Dさん、ありがとうございました)。
https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20160411/014983.html

メールに書いてある内容

たとえば10.0を0.1で割ったときの余りを考えます。
FloatGaiyou.png
数式の上では余りは0ですが、2進数では0.1が正確に表現できないため、これは0.1より少し大きい値になります。
Float_0_1_Kakudai.png
そのズレが蓄積して10.0のところもズレてしまいます。
10_0Kakudai.png
ここから普通に余り(10.0と同じまたは低いところまでの距離)を求めると下の図のような9.9に近いポイントとの距離が余りになってしまいます。
9_9_and_Amari.png
この現象を避ける(被害を軽減する)ために、最寄り駅方式のメソッドがあるそうです。
Float_Moyorieki.png

samekard
アウトドアプログラミング初心者 コンパイルエラー寄せ集め https://samekard.blogspot.jp/2014/09/swifterror.html
https://samekard.jp/ja/index.html
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away