我一直在查看我正在查看的vb代码中对特定值的引用,并想知道是否有人对其重要性有任何线索。
var_ret_1 = Int((6.37066138261923E-314 / 32))
和
loc_0046BBAE: Var_Ret_2 = CDbl((6.37066138261923E-314 - 6.37066138261923E-314))
loc_0046BBC4: fcomp real8 ptr var_5C
loc_0046BBE3: Err.Raise
loc_0046BBE9:
loc_0046BBF5: If word ptr [ecx] < 0 Then GoTo loc_0046BBFD
loc_0046BBF7: Err.Raise
loc_0046BBFD:
loc_0046BC00: shl eax, 04h
loc_0046BC03: edi+edi*4 = edi+edi*4 - word ptr var_28
loc_0046BC0E: shl eax, 04h
loc_0046BC11: esi+esi*4 = esi+esi*4 - word ptr [ecx]
loc_0046BC38: Var_Ret_3 = CDbl((6.37066138261923E-314 - 6.37066138261923E-314))
loc_0046BC4E: fcomp real8 ptr var_68
loc_0046BC6F: edi = word ptr [eax] - 1```
答案 0 :(得分:0)
这是在最小(最接近于零)的 64 位浮点数附近。也许当你从它本身减去它时,它要么引发错误(指数溢出),将 Var_Ret_2 和 Var_Ret_3 清零,或者不完全清零这些变量。
这似乎是有问题的代码。