誤記訂正(初版)
最終更新日:2002年8月9日
- P.59 5行目
(誤) last if $ij > 40
(正) last if $ij > 40;
※文末にセミコロン「;」を追加
- P90 スクリプトの9行目
(誤) $$ref_array1
(正) $$ref_array[1]
- P90 実行結果の2行目
(誤) $array1 = c
(正) $array[1] = c
- P.117 19行目
(誤) /gix
(正) /gix;
- P.118 4行目
(正) 「するか修飾子「m」取り去る」を削除
- P128 20行目
(誤) 「rindex」は、「rindex」と同様に
(正) 「rindex」は、「index」と同様に
- P147 11行目
(正) 「.」(ピリオド)を追加
- P156 13行目
(正) 「.」(ピリオド)を追加
- P157 1行目
(正) 「.」(ピリオド)を追加
- P157の16行目
(誤)85,65,95
(正)85,60,95
- P.162 6行目 「91.2」について
Q. マックでは「91.3」になりますが変でしょうか?
A. 変ではありません。(P158 表5.5参照)
マックが正しい結果を出しています。
この理由は、少し難しくなります。 これは、コンピュータによる実数計算全般に共通する問題です。コンピュータ内部で実数を有限のビット数で表現する為に生じるもので、一般に「丸め誤差」と呼ばれます。通常私たちは10進数を用いていますが、コンピュータ内部では2進数で表わされている為、
10進数から2進数に変換する際に、誤差が生じる場合があります。たとえば、1.1の0.1は、2進数では
1/16(0.0625) +1/32(0.03125)+・・・というように循環小数になってしまいます。逆に、3.5
の 0.5は、 1/2ですので正確に表わされます。
P162の結果は本来、printf "%4.1f"の書式指定であれば小数点以下2桁を四捨五入(「丸め」といいます)して小数点以下1桁に丸めますから、「91.25」
を小数点以下2桁で四捨五入して「91.3」にならなければなりません。
ところが、UNIXの場合には、「91.25」というデータが、内部ではたとえば「91.24999…」のように表されものと思われます。このため、小数点以下2桁で四捨五入すると「91.2」となるようです。
したがって、この例は不具合が発生する稀なケースになっているということになります。
- P162 19行目
(誤) $field5
(正) $field[5]
- P164 2行目
(誤) $field5
(正) $field[5]
- P186 10行目
(誤) 溝築子
(正) 構築子
戻る