プロが教える店舗&オフィスのセキュリティ対策術

AccessからExcelへエクスポート時に小数点以下の桁数がおかしくなります。

59.20
118.40
118.40
77.70
49.20
↓↓↓↓↓

59.20000076
118.4000015
118.4000015
77.69999695
49.20000076
の様になってしまいます。
以下エクスポート処理です。

StrSQL = "SELECT MaxSize FROM SizeTabel" ←本当はかなり長いSQL

Set QueryTemp = CurrentDb.CreateQueryDef("ExportSQL", StrSQL)
DoCmd.SelectObject acQuery, "ExportSQL", True
DoCmd.TransferSpreadsheet acExport, 8, "ExportSQL", Application.CurrentProject.Path & "\test.xls", False, ""
CurrentDb.QueryDefs.Delete ("ExportSQL")

Format関数で桁数を調整したりはしたのですが、精度が必要な為、原因を追究したいと考えています。
アドバイスよろしくお願いいたします。

A 回答 (2件)

空のデータベースを1つ作り


テーブルの新規作成(デザインビュー)
で適当なテーブルを1つ作ります

KEY,フィールド名,データ型
■,id, オートナンバー
□,data, 数値型(単精度浮動小数点型、少数点以下桁数=15)

で、dataに以下を入力
59.20
118.40
118.40
77.70
49.20

その後、テーブルのデザインビューで
□,data,数値型を
倍制度浮動小数点 に変更してテーブルを見ると
data
59.2000007629395
118.400001525879
118.400001525879
77.6999969482422
49.2000007629395

これと同じ事が、EXCEL か ACCESS の
自分で修正できないような内部の処理のどこかで
行われています。

原因は、そういう事です

参考URL:http://pc.nikkeibp.co.jp/pc21/special/gosa/eg1.s …
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。

現在は
Format関数をあててみたのですが、
Excelエクスポート時に左寄せになってしまいます。
また、Round関数では、数値はまったく変わりませんでした。

何か良い方法をご存知ないですか?

お礼日時:2010/03/16 17:07

Access側では、データ型が単精度の数値型ということのようですね。


#1の方の内容を参考にすると、Excel側ではそれが倍精度に拡張されたようですね。或いは、Access側で拡張してからエクスポートされたのかもしれないが。

浮動小数点数には誤差がつきものなので、普通は問題にしません。精度は保持されているし(少なくとも単精度分の精度は)。
でも、入力データが59.20だから、これをそのまま表示したいと言う気持ちも分かります。
単なる表示上の問題ならExcel側で小数点以下の桁数を2にすればよいでしょう。
表示上でなく、データそのものを正確に59.20にしたいと言うことなら浮動小数点数は使えませんので、例えば、100倍した値の5920を整数型で保持すると言うことになるでしょう。この場合、このデータは使用する時点で100で割ることになります。
    • good
    • 0

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

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


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