
プログラム中(VBscript)で、データベースから、商品データ(数値)を取り出して、過去のデータから現在のデータまでをどんどん値を引いていって、その経過を表示する、という引き算を繰り返す作業を行っているのですが、途中でバグが出てしまいます。
実際に取り出される数値としては、整数もしくは小数点以下第一位までの数値です。
どのようなバグが発生するかといいますと、たとえば、数値「5.6」から数値「2.4」を引いたら、表示が、「3.1999999999」などと表示されてしまうのです。
どのようにすれば解決されるのでしょうか。
初心者なので的外れな質問かもしれませんが、ご回答よろしくお願いします。
No.1ベストアンサー
- 回答日時:
表示だけの問題でしたら、最終表示の時に
Dim Disp as String
Dim Disp_data as Double
Disp_Data = 3.1999999999
Disp = Format( Disp_Data, "#,##0.00")
で、Dispを表示させれば直ります。
途中の計算結果も合わせるということであれば、
Dim Disp as String
Dim Disp_data as Double
Disp_Data = 3.1999999999
Disp = Format( Disp_Data, "#,##0.0")
Data_Arry(i) = val(Disp)
とすれば大丈夫なはずです。
これに四捨五入がからむと、ちょっとややこしくなりますが、数値化けでしたらこれで大丈夫なはずです。
うまくモデファイしてお使いください。
No.2
- 回答日時:
2進数表記にした時に循環小数になるような数値があると、単純な足
し算や引き算でも誤差が生じます。「丸め誤差」で検索してみると解
説が見つかりますので参照して下さい。
で、最大でも小数点以下1桁までと決まっているのなら、いったん10
倍して整数として演算してから元に戻すようにすれば回避できます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB 音の波形を取得する関数は?
-
excel access連携 このテーブル...
-
TCPでデータを受け取ってそれを...
-
Beckyでのメールの移動
-
DTOとEntityの差は何ですか。
-
wordの差し込み印刷で文字...
-
Excel VBA:特定の文字列以降(...
-
VBA コレクションに2次元配列...
-
「取得先」という表現について
-
Dosブロンプトでtabを出力したい
-
switch()文で値の大小比較
-
バッチファイルで、全てのウィ...
-
CListCtrlのcheckboxサイズ変更
-
開始と終了を指定して、その間...
-
php history.back()の戻るボタ...
-
syntax error, unexpected 'ech...
-
Google scholarがひらけなくな...
-
各クライアントマシンのログイ...
-
ミュージックのアートワークを...
-
shシェルスクリプト 空白行の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
wordの差し込み印刷で文字...
-
【C#】DataGridViewの最大列数...
-
excel access連携 このテーブル...
-
WordでExcelデータを差込...
-
DTOとEntityの差は何ですか。
-
ActiveReportのサブレポート機...
-
INIファイルに一括書き込みを行...
-
VB6でDBからクリップボード経由...
-
JavaからPHPへの値の受け渡し
-
VisualBasic2010のPictureBoxに...
-
MSFlexGridのデータを初期化し...
-
VBA内でのGetPixelを使用した時...
-
json_encodeが表示しない
-
VB6.0とスプレッドシート
-
C#でのForm間のデータ受け渡し...
-
クリップボード画像転送方法
-
GridViewからチェックボックス...
-
「外部データの取り込み」とい...
-
TCPでデータを受け取ってそれを...
-
OleDbDataReaderで単精度浮動小...
おすすめ情報