• ベストアンサー

accsseのクエリについて

Accessのクエリ内で、A÷B×Cという計算式を行いたいのですが、 その際にA÷Bの小数第7位までを求め(8位以下は切捨て)たうえで A÷B×Cの解を求めたいのですが、どのようにクエリ式を記述すればいいでしょうか?

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

  • ベストアンサー
noname#140971
noname#140971
回答No.5

補足の訂正: Rounds関数では、そもそも10^7(か^8)を乗じて四捨五入、切り捨て、切り上げをしています。 が、それでも小数点以下4桁までした正しい結果を得られません。 ですから、それ以上の精度を必要とする場合は8桁目で操作するならば10^4を乗じるということです。 チト、補足の補足は我ながら意味が不明でしたので訂正します。

その他の回答 (4)

noname#140971
noname#140971
回答No.4

補足: 最低、10^4をすれば良いと思います。 残りは Rounds関数の中で整数化しているということです。 ですから、現実には、「Rounds関数の計算でやれば良い」が答えです。

noname#140971
noname#140971
回答No.3

補足: [イミディエイト] ? DBSELECT("SELECT Rounds(A*10^4/B, 1, 3)/10^4 FROM Tab1",,vbCRLF) 0.3333333 0.6666666 1.3333333 最低、10^4をすれば良いと思います。

noname#140971
noname#140971
回答No.2

tab1: テーブル [ID]_[A____]_[B_]_[C_] __1_______1_____3___11 __2_______2_____3___22 __3_______4_____3___33 ' ------------------------------ ' 共通記号定数 ' ------------------------------ Option Compare Database Option Explicit ' ' Rounds関数用 ' Public Const 四捨五入 = 0 Public Const 切り捨て = 1 Public Const 切り上げ = 2 [イミディエイト] ? DBSELECT("SELECT Rounds(A*10^7/B, 0, 0)/10^7 FROM Tab1",,vbCRLF) 0.3333333 0.6666667 1.3333333 ? DBSELECT("SELECT Rounds(A*10^7/B, 1, 0)/10^7 FROM Tab1",,vbCRLF) 0.3333333 0.6666666 1.3333333 ? DBSELECT("SELECT Rounds(A*10^7/B, 2, 0)/10^7 FROM Tab1",,vbCRLF) 0.3333334 0.6666667 1.3333334 一応、8桁目で四捨五入、切り捨て、切り上げを行っています。 Public Function Rounds(ByVal M As Currency, _             ByVal A As Integer, _             Optional D As Integer = 0) As Variant     Rounds = Sgn(M) * Fix(Abs(M) * 10 ^ D + Abs((A = 0) * 0.5@ + (A = 2) * (Int(M * 10 ^ D) <> (M * 10 ^ D)))) / 10 ^ D End Function

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

こんな感じの式の事でしょうか。 =Int([A]/[B]*10^7)/10^7*[C]

関連するQ&A