言っておくが、二進法のSingle/Doubleだって誤差の無い計算は可能だし、
Currency/Decimalだって何進法でも起こる誤差を避けることは不可能。

ただ、十進法で有限小数となる値の中には、
二進法へ変換すると無限小数になるので正確に表現できない、
つまり有限桁しか扱えないコンピュータでは、それだけで打切り誤差が発生するものがある。
だから十進法中心に考える人間には、一見すると誤差が付き物に思えるだけ。
もちろん、金融では致命的な弱点となるので、Single/Doubleは脱落。

また十進法の浮動小数点数 (VBのDecimal)はどうかというと、
下手に計算すれば情報落ちが問題になりやすいし、
VB固有の事情としてDecimal型の値はVariantに入れるしかないという
不便さもあって、駄目ではないが要注意。

そんなわけでCurrencyに落ち着く。もちろん整数だけなら整数型がよい。