Page 703 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼小数点以下の表示がうまくいきません。 のりお 03/2/7(金) 22:37 ┗Re:小数点以下の表示がうまくいきません。 ハマゾウ 03/2/8(土) 10:03 ─────────────────────────────────────── ■題名 : 小数点以下の表示がうまくいきません。 ■名前 : のりお ■日付 : 03/2/7(金) 22:37 -------------------------------------------------------------------------
public m as double public l as double Sub program() m=0.1 l=0 Do until l>100 l=l+m cells(1,1)=l Loop End sub と打って、0.1刻みで表示していくと、6.0が5.99999となってしまいます。その 後も80が80.00000000001になったりと困っています。round関数のround(l,2)として数合わせしていますが、なぜそうなるのでしょうか?また回避の仕方があれば教えていただけませんでしょうか。宜しくお願いします。 |
▼のりお さん: Single型やDouble型はケタ落ちや丸め誤差のため誤差が発生します。 Long型を使えば回避できます。コードの中では整数で計算して表示する時に 10で割ればOKです。 Public m As Long Public l As Long Sub program() m = 1 l = 0 Do Until l > 1000 l = l + m Cells(1, 1) = l / 10 Loop End Sub |