相关疑难解决方法(0)

在VB6中将Double拆分为Long loword和long hiword

我需要使用kernel32的SetFilePointer函数来读取磁盘的扇区,该扇区的地址包含在用于大小问题的double中。我知道ReadFile函数接受loword和hiword一样长的参数,但是我无法将我的双精度地址拆分成两个单词。

我尝试了使用Mod和Fix的几种方法,但最后我只有溢出错误。

LoWord = CLng(dNum Mod CDbl(4294967295)) 'Dont care the number I use, I always get overflow error
Run Code Online (Sandbox Code Playgroud)

要么

LoWord = CLng(FMod(dNum, 4294967295#))
HiWord = CLng(dNum - (FMod(dNum, 4294967295#)))   'tryed different number to see the behaviour, don't care
Run Code Online (Sandbox Code Playgroud)

哪里

Public Function FMod(a As Double, b As Double) As Double
   FMod = a - Fix(a / b) * b

   'http://en.wikipedia.org/wiki/Machine_epsilon
   'Unfortunately, this function can only be accurate when `a / b` is outside [-2.22E-16,+2.22E-16]
   'Without this correction, FMod(.66, .06) = 5.55111512312578E-17 …
Run Code Online (Sandbox Code Playgroud)

vb6

4
推荐指数
2
解决办法
101
查看次数

将 8 字节数组转换为 Double

(谈 Visual Basic 6)

我能够找到如何将 Double 转换为 8-bytes array,但反之亦然。

在我开始尝试编码之前,是否有一些例行程序可以做到(如链接问题中描述的“CopyMemory”)?在这种情况下可以使用“CopyMemory”吗?

vb6

2
推荐指数
1
解决办法
3773
查看次数

标签 统计

vb6 ×2