Dim PI1 as single
Dim PI2 as Double
と宣言し、それぞれを
r=5
PI1 = 3.14159
PI2 = 3.14159
label1.caption = PI1 * r ^ 2
label2.caption = PI2 * r ^ 2
と計算させたんですが、結果がSingleで宣言した計算だと少数点以下が多く
表示されて(78.5397529602051)、Doubleだと小数点以下が5桁しか表示
されませんでした(78.53975)。
どうしてなんでしょうか?ヘルプ見てもわかりません。どなた助けてください。
Singleは 32Bit
Doubleは64Bit
これとデータの表現は関係ない
表現=精度ではない
Dim DDT As Double
Dim SDT As Single
DimStringdata As String
StringData=Format(DDT,"#####.###########")
StringDAta=Format(SDT,"#####.###########")
こんなにすればともに同じ桁表示するが精度はもちろん
Doubleがより真値に近い。
Single は不正確。せいせい5桁までしか信用できない。
どちらでも 小数点10桁表示しようとすれば表示します。
表示をシステムに任せると、ちょうどきりのいいところで表示をとめる。
Singlede計算すると割り切れないので長々と表示するとしても
精度は5−6桁 Doubleは約10桁
Doubleで計算して、精度上きりがよければ5桁までしか出ない場合もある。
元来、Double 64Bit 指数部 8 Bit{桁Bit} 仮数部 (64−8)ビット
Single 32Bit 指数部 8 仮数部(32−8)Bit
マシンやOSにより 8が12になったりするばあいもある!
この場合、Doubleが精度を若干犠牲にして大きな桁 10の何桁
を表せる。
ありがとうございました。
ほんとにたすかりました。しらなかったです。
OSのバージョンや種類によっても変わるなんて、、、
知らないことっていっぱいあるんだなってきづきました。
ほんとうにありがとうございました。
すいません。解決しました。
編集 削除