[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『小数点第3位を扱う変数のデータ型について』(see)
'0.001をA1に表示させ、0.001を足していく Sub test() Dim a As Single
a = 0.001 Do Until a = 1
Range("A1") = a a = a + 0.001
Loop
End Sub
小数点第3位を扱う変数を設定するにはどのデータ型なのか調べていて、 小数点型で、Singleなのかな?と試してみましたが
どのホームページにも値の例や最小値と最大値が 負:-3.402823E38 〜 -1.401298E-45 正:1.401298E-45 〜 3.402823E38 と書かれていて、 今回扱いたい「0.001」はNGなのかな…?
ちなみに、上記のコードは、Singleで問題なく動いてはいるのですが A1の数式バーに 0.00100000004749745 という数字が表示され、 なんだかすっきりしていません…
Doubleだとセルと数式バーは0.001となるので、こちらを使うのかな…?
データ型をどのように使うとよいか教えて頂けると助かります
< 使用 Excel:Excel2010、使用 OS:Windows10 >
Sub DecimalTest() Dim a As Single Dim b As Variant Dim r As Long a = 0.001 b = CDec(0.001) r = 2
Do Until a >= 1 Range("A1") = a Range("B1") = b If a <> b Then r = r + 1 Range("A" & r).Value = a Range("B" & r).Value = b Range("C" & r).Value = a - b End If a = a + 0.001 b = b + CDec(0.001) Loop End Sub
ご参考までに
(お邪魔します) 2023/02/01(水) 11:34:36
もともとSingleやDoubleでは小数点以下の計算で誤差が出てくることがある。 (整数部分では誤差はない) で、小数点以下の計算で誤差が出ないCurrency型が用意されている。 ただし小数点以下4桁までの制限があるが。
扱える数値の範囲は -922,337,203,685,477.5808 から 922,337,203,685,477.5807 になる。 (ねむねむ) 2023/02/01(水) 16:44:10
お邪魔しますさん ねむねむさん
小数点の扱いは注意ですね… 勉強になりました
ありがとうございました (see) 2023/02/02(木) 12:31:05
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.