- ベストアンサー
#Func! 四捨五入
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
【補足】Rounds()正規版 Public Function Rounds(ByVal M As Currency, _ ByVal A As Integer, _ Optional D As Integer = 0) As Variant Dim R As Currency Select Case A Case 0 ' 四捨五入 R = Fix(M * 10 ^ D + 0.5@) Case 1 '切り捨て R = Fix(M * 10 ^ D) Case 2 ' 切り上げ If Int(M) <> M Then R = Fix(M * 10 ^ D) + 1 * 10 ^ D Else R = Fix(M * 10 ^ D) End If End Select Rounds = Sgn(M) * (R / 10 ^ D) End Function ちょっと非正規版を紹介する誤りを冒してしまいました。その違いは。切り上げ処理にあります。通常は、正規版の考え方かと思います。
その他の回答 (3)
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
>#Func!になってしまいます。 なら、Rounds()を用意するのみ! Public Function Rounds(ByVal M As Currency, _ ByVal A As Integer, _ Optional D As Integer = 0) As Variant Dim R As Currency Select Case A Case 0 ' 四捨五入 R = Fix(M * 10 ^ D + 0.5@) Case 1 '切り捨て R = Fix(M * 10 ^ D) Case 2 ' 切り上げ R = Rounds(M * 10 ^ D + 0.4@, 0) End Select Rounds = Sgn(M) * (R / 10 ^ D) End Function
お礼
ありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
SQLでは MOD(FLOOR(件数/1000),10) 件数は正の整数だと思うので、SQL巻数にINTが無いらしいのでFLOORを使う。 間違っていたらすみません。 -- 蛇足 エクセルでやると A B C D 3456 23 3 3 2345678 2345 5 5 234 0 0 0 12123567 12123 3 3 ーー A列 原データ B列は=INT(A1/1000) C列は=MOD(B1,10) D列は=MOD(INT(A1/1000),10)
お礼
ありがとうございました。
- kkkkkm
- ベストアンサー率66% (1719/2589)
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/sq_kj07_1.htm こたらが参考になりませんでしょうか。
お礼
ありがとうございました。
お礼
ありがとうございました。