OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

ACCESS2000

  • 困ってます
  • 質問No.122005
  • 閲覧数36
  • ありがとう数2
  • 気になる数0
  • 回答数4
  • コメント数0

Option Compare Database
Public Function RoundDown(X As Double, s As Integer) As Double
Dim t As Integer
t = 10 ^ Abs(s)
If s > 0 Then
RoundDown = Int(X * t) / t
Else
RoundDown = Int(X / t) * t
End If
End Function

というモジュールをつかって値の切り捨てをおこなっていましたが、マイナスの値がうまく動きません。
どなたか教えていただけないでしょうか。
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.3
レベル10

ベストアンサー率 31% (44/140)

ええとですね。
int関数は、負の時は桁上げします。
なのでint関数の替りにFix関数を使って見て下さい。

MyNumber = Int(99.8)  ' 99 を返します。
MyNumber = Fix(99.2)  ' 99 を返します。

MyNumber = Int(-99.8)  ' -100 を返します。
MyNumber = Fix(-99.8)  ' -99 を返します。
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.1
レベル12

ベストアンサー率 45% (207/457)

maokunさん マイナスの値が上手く働かないとはなにを指してますか? X = 1.12 s = 1 A = 1.1 X = 1.12 s = -1 A = 0 X = -1.12 s = 1 A = -1.2 X = -1.12 s = -1 A = -10 となると思いますがどこの答えに納得がいかないのかな?
maokunさん
マイナスの値が上手く働かないとはなにを指してますか?

X = 1.12
s = 1
A = 1.1

X = 1.12
s = -1
A = 0

X = -1.12
s = 1
A = -1.2

X = -1.12
s = -1
A = -10

となると思いますがどこの答えに納得がいかないのかな?

  • 回答No.2

負の数の場合、Int関数でなくFix関数を使えばお望みの結果が出るのでは?
負の数の場合、Int関数でなくFix関数を使えばお望みの結果が出るのでは?
  • 回答No.4
レベル13

ベストアンサー率 68% (791/1163)

下記のようにすると正負ゼロとも同じ処理になりますが・・・ Int、Fixどちらでも同じ値でしょう。 質問のモジュールは Abs(s)>=5 でエラー? 'sが正は小数桁方向で作成 Public Function RoundDown2(X As Double, s As Integer) As Double   RoundDown2 = Sgn(X) * Int(Abs(X) ...続きを読む
下記のようにすると正負ゼロとも同じ処理になりますが・・・
Int、Fixどちらでも同じ値でしょう。
質問のモジュールは Abs(s)>=5 でエラー?

'sが正は小数桁方向で作成
Public Function RoundDown2(X As Double, s As Integer) As Double
  RoundDown2 = Sgn(X) * Int(Abs(X) * 10 ^ s) / 10 ^ s
End Function
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ