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

いつもお世話になります。
アクセス2000を使用しております。
テーブルに8.2と3600の数字が格納されています。
フィールドサイズは倍精度浮動小数点型です。
クエリーをつかって積を求めると、通常に計算すると29520が表示されます。その他の計算結果で少数点以下が出てきますので小数点以下を切り捨てたいのでINT関数を使うと29519と表示されます。
本来INT関数は、29520に対しては29520を返すと思うのですが、どうしたらいいのでしょうか。
小数点以下を切り捨てる方法を教えてください。

A 回答 (3件)

>倍精度浮動小数点型ではなぜダメなのでしょうか。


少数というのは何進法の場合でも簡単に無限小数になります
(10進法の1/3みたいにね)

コンピュータではそれを大きさが限られたデータ型で扱わなければなりませんから
収容できない部分を丸めることになります
そのためごくわずかの誤差が生じてしまいます
その誤差がInt関数を使ったときに大きな違いとなって現れるわけです
(1.9999999999999999999が1になってしまう)

通貨型はこういう問題に対処するために考えられたデータ型で
小数点下4位までの精度が保障されるようになっています
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
実は本日、図書館へ行ってきてデータ型について調べてみましたが、わかりませんでした。
明確なご説明をありがとうございました。

お礼日時:2007/06/10 23:25

=ROUNDDOWN(数字,0)


とすると 少数点 以下は、切り捨てられます。

で、どうです ??。
    • good
    • 0
この回答へのお礼

ありがとうございます。
rounddown関数は、組み込み関数でアクセスにはありませんよね。
エクセル関数をVBAで使用できるようにすれば、いいのでしょうがもっと簡単に小数点の切り捨てが出来ないのでしょうか。

お礼日時:2007/06/10 11:31

倍精度浮動小数点型じゃなく通貨型を使います

この回答への補足

ありがとうございます。
通貨型にしたら解決いたしました。
倍精度浮動小数点型ではなぜダメなのでしょうか。

補足日時:2007/06/10 11:26
    • good
    • 0
この回答へのお礼

お礼の投稿を補足にしてしまいました。
ありがとうございました。

お礼日時:2007/06/10 11:29

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