19/06/24 00:03:38.49 JSF3ka2M0.net
>>19
普通はCは浮動小数点を内部で2進数で扱っているため。
10進数で歯切れのよい数でも2進数では循環小数になったりして割り切れない値になることがある(例えば10進数で 0.1 は2進数では 0.00110011...という循環小数になる)。そうなるとどうしても10進数文字列への変換で近似値にしか変換できない。
では最初から内部も全て10進数で全て計算すれば良いではないかと思うかも知れないが、それではコンピュータ内部での計算が遅くなる。
遅くなってでも正確さが必用とされるお金の計算等はそれ用のコンパイラまたはライブラリを使用して実現する(あるいはC言語ではないそれ用に設計された言語を使う)。
デフォルトではCは誤差が出てもいいから素早く計算出来る状態になっていると考えて良い。