アプリ版:「スタンプのみでお礼する」機能のリリースについて

VBAを学び始めたのですが、疑問点があります。
添付画像のように、イミディエイトウインドウに、

> ? 0.3 = 0.1 + 0.2
とすると
> False

> ? 0.4 = 0.2 + 0.2
とすると
> True

と出力されます。

なぜこのような違いが出るのでしょうか?

よろしくお願いいたします。

「Excel VBAでの数値の計算について」の質問画像

A 回答 (2件)

小数点以下の数値がつく型の数値を浮動小数点数といいます。


浮動小数点数は、その性質上、その値をきっちりとした数値で記録しているのはなく、
近似値で記憶しています。
https://ja.wikipedia.org/wiki/%E6%B5%AE%E5%8B%95 …
のIEEE方式(IEEE 754 形式)が一般的です。
そのため、必ず、演算には誤差が伴います。
従って、お金の計算で小数点が付いた場合(円未満の値)でも、
浮動小数点型のデータで計算を行うことは推奨されません。
VBAの場合は通貨型を使います。
    • good
    • 1

十進数で0.1は二進数だと循環小数になるんですよ。


たぶん、離散化誤差の関係だと思います。
4倍精度計算くらいにすれば、直ると思います。
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A