• ベストアンサー

INT関数について アクセス2000です

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

質問者が選んだベストアンサー

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.3

>倍精度浮動小数点型ではなぜダメなのでしょうか。 少数というのは何進法の場合でも簡単に無限小数になります (10進法の1/3みたいにね) コンピュータではそれを大きさが限られたデータ型で扱わなければなりませんから 収容できない部分を丸めることになります そのためごくわずかの誤差が生じてしまいます その誤差がInt関数を使ったときに大きな違いとなって現れるわけです (1.9999999999999999999が1になってしまう) 通貨型はこういう問題に対処するために考えられたデータ型で 小数点下4位までの精度が保障されるようになっています

sutesute
質問者

お礼

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

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • Nayuta_X
  • ベストアンサー率46% (240/511)
回答No.2

=ROUNDDOWN(数字,0) とすると 少数点 以下は、切り捨てられます。 で、どうです ??。

sutesute
質問者

お礼

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

すると、全ての回答が全文表示されます。
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.1

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

sutesute
質問者

お礼

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

sutesute
質問者

補足

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

すると、全ての回答が全文表示されます。

関連するQ&A