古代VBプログラマ質問スレ(Ver.6.0 まで) part65 [転載禁止]©2ch.net (832レス)
上下前次1-新
抽出解除 レス栞
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
659(1): デフォルトの名無しさん [] 2022/05/04(水) 08:51:33.36 ID:llwekS7n(1) AAS
>>657657(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