古代VBプログラマ質問スレ(Ver.6.0 まで) part65 [転載禁止]©2ch.net (832レス)
前次1-
抽出解除 レス栞

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
659
(1): デフォルトの名無しさん [] 2022/05/04(水) 08:51:33.36 ID:llwekS7n(1) AAS
>>657
657(1): デフォルトの名無しさん [sage] 2022/05/04(水) 01:56:07.05 ID:cCuNnoh+(1/2) AAS
VB6でDouble型をLarge_Integer型に変換するにはどうすればいいんでしょうか?

ググって以下のソースを見つけたのですが、オーバーフローします。
QuadPart使えないし。。。

Private Function cvtDblToLi(Val As Double) As LARGE_INTEGER
Dim foo As LARGE_INTEGER

foo.lowpart = Val And &HFFFFFFFF
foo.highpart = RightShift(Val, 16)

cvtDblToLi = foo

End Function
つかさー
VB6のDouble 型ってIEEE754に準拠してるだろうから
もっと基数とか指数とか仮数とかちゃんとみて
変換掛けてやらないといけないんじゃない?(鼻ホジ)

なんかそれ見てると下位4バイトをlowPartに
上位6バイトをhighPartに突っ込んでるようにしか見えない
660
(1): デフォルトの名無しさん [sage] 2022/05/04(水) 19:05:29.42 ID:cCuNnoh+(2/2) AAS
>>658-659
レスthx

どっかのサイトの解説で、Currency型は整数15桁と小数4桁の8バイトで整数精度に問題あり。
LONGLONGと同じ8バイトのDouble型推奨って書いてたから、Double型との相互変換で
サンプル探してたけど、Double型が8バイトなのは最近のVBであって
VB6のDouble型って4バイトなのね。orz

Currency型とLARGE_INTEGER型の相互変換で探したら、すぐ見つかりました。
どうもお騒がせいたしました。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.034s