Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


28282 / 76738 ←次へ | 前へ→

【53758】Re:条件式
発言  ichinose  - 08/2/5(火) 21:48 -

引用なし
パスワード
   こんばんは。

標準モジュールに
'===================================================
Option Explicit
  Type d_data
    dbl As Double
    End Type
  Type s_data
    sng As Single
    End Type
  Type bd_data
    byt(0 To 7) As Byte
    End Type
  Type bs_data
    byt(0 To 3) As Byte
    End Type
Function floating_img(ByVal myvalue As Variant, ByVal typ As Long) As String
'指定された型の数値のメモリーイメージをHEXコードで出力する
'in ----myvalue----数値
'    typ=0--single 1--double
'out-----floating_img ---メモリーイメージ(HEXコードで)
  On Error Resume Next
  Const typ_sin = 0
  Const typ_dbl = 1
  Dim g0 As Long
  Dim g1 As Long
  Dim dd As d_data
  Dim ss As s_data
  Dim bb_s As bs_data
  Dim bb_d As bd_data
  Dim wk As String
  Select Case typ
   Case typ_sin
    ss.sng = CSng(myvalue)
    LSet bb_s = ss
   Case typ_dbl
    dd.dbl = CDbl(myvalue)
    LSet bb_d = dd
   End Select
  If typ = 0 Then
    g1 = UBound(bb_s.byt())
  Else
    g1 = UBound(bb_d.byt())
    End If
  floating_img = ""
  For g0 = g1 To 0 Step -1
    If typ = 0 Then
     wk = Hex(bb_s.byt(g0))
    Else
     wk = Hex(bb_d.byt(g0))
     End If
    If Len(wk) = 1 Then wk = "0" & wk
    floating_img = floating_img & wk
    Next
End Function

(以前は、一度ファイルに落としていたんですが、
 Lsetで出来ることをとあるサイトで教えていただきました)


として、

内部形式まで調べてみます。


問題のセルA21に対して

適当なセルに

=floating_img(A21,1)




=floating_img(3,1)

との結果の違いを確認してください。

セルA21は、

4008000000000004

数値の3の場合は、

4008000000000000

かなり深い桁で値が違ってますよね?

ご推察どおり、小数の誤差です。


この結果の違いが影響しています。
Singleに変換すると、値が切られているので(Singleは4バイト)

この場合は、等しくなります。

数式内で比較すると、何らかの補正がされているみたいですが!!

Function test(x) As Variant
  If Evaluate("and(" & x & ">=1," & x & "<=3)") Then
    test = "ok"
  Else
    test = "ng"
    End If
End Function

=test(a21)
適当なセルで上記の関数を試してみてください

0 hits

【53746】条件式 多摩川 08/2/5(火) 17:08 質問
【53747】Re:条件式 Jaka 08/2/5(火) 17:30 発言
【53748】Re:条件式 多摩川 08/2/5(火) 17:30 質問
【53749】Re:条件式 多摩川 08/2/5(火) 17:43 質問
【53755】Re:条件式 りん 08/2/5(火) 21:11 発言
【53756】Re:条件式 VBWASURETA 08/2/5(火) 21:17 発言
【53758】Re:条件式 ichinose 08/2/5(火) 21:48 発言
【53759】Re:条件式 追伸 ichinose 08/2/5(火) 21:52 発言
【53760】Re:条件式 訂正 ichinose 08/2/5(火) 22:11 発言
【53764】Re:条件式 多摩川 08/2/6(水) 9:06 お礼
【53852】Re:条件式 ichinose 08/2/11(月) 22:52 発言
【53855】Re:条件式 多摩川 08/2/12(火) 8:50 お礼

28282 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free