- ベストアンサー
accsseのクエリについて
Accessのクエリ内で、A÷B×Cという計算式を行いたいのですが、 その際にA÷Bの小数第7位までを求め(8位以下は切捨て)たうえで A÷B×Cの解を求めたいのですが、どのようにクエリ式を記述すればいいでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
補足の訂正: Rounds関数では、そもそも10^7(か^8)を乗じて四捨五入、切り捨て、切り上げをしています。 が、それでも小数点以下4桁までした正しい結果を得られません。 ですから、それ以上の精度を必要とする場合は8桁目で操作するならば10^4を乗じるということです。 チト、補足の補足は我ながら意味が不明でしたので訂正します。
その他の回答 (4)
補足: 最低、10^4をすれば良いと思います。 残りは Rounds関数の中で整数化しているということです。 ですから、現実には、「Rounds関数の計算でやれば良い」が答えです。
補足: [イミディエイト] ? DBSELECT("SELECT Rounds(A*10^4/B, 1, 3)/10^4 FROM Tab1",,vbCRLF) 0.3333333 0.6666666 1.3333333 最低、10^4をすれば良いと思います。
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)
こんな感じの式の事でしょうか。 =Int([A]/[B]*10^7)/10^7*[C]