• ベストアンサー

access  int関数

ACCESS2000を利用しています。 フォームでテーブルのデータを集計していますが、 =int([面積]*[単価])として 面積=9.62 単価=300 の場合2,885と表示され 正しい2,886が表示されません。他のものは正しく表示されています。 小数点以下を切り捨てたいだけなので =rounddown(([面積]*[単価]),0)としたいところなのですが これだと#name?となってしまいます。 int又はroundのどこかを間違っているのでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • JAWS55
  • ベストアンサー率38% (176/452)
回答No.1

面積=9.62 で 面積のデータ型が浮動小数点型になっているので計算結果が2,885になっています。 データ型を通貨型(Currency)または十進数型(Decimal)にして計算をして下さい。

s-star
質問者

お礼

ありがとうございます。十進数型に変更することにより 正しい数字になりました。

その他の回答 (2)

noname#140971
noname#140971
回答No.3

丸め誤差対策は、No1の方が書かれていますので割愛します。 ここでは、四捨五入、切り上げ、切り捨ての関数だけを紹介しておきます。 [イミディエイト] ? ccur(9.62) * ccur(300) 2886 ? ccur(9.62) * ccur(301) 2895.62 ? Rounds(ccur(9.62) * ccur(301), 切り捨て) 2895 ? Rounds(ccur(9.62) * ccur(301), 四捨五入) 2896 ? Rounds(ccur(9.62) * ccur(301), 切り上げ) 2896 ここでは、Rounds関数を利用しています。 Public Const 四捨五入 = 0 Public Const 切り捨て = 1 Public Const 切り上げ = 2 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 ? Rounds(ccur(9.62) * ccur(301), 切り捨て,1) 2895.6 ? Rounds(ccur(9.62) * ccur(301), 四捨五入,1) 2895.6 ? Rounds(ccur(9.62) * ccur(301), 切り上げ,1) 2895.7 このように、Rounds関数では小数点の位置も指定できます。 ただ、切り上げ処理の場合、Rounds関数の場合に注意が必要です。 0.00000001 を切り上げるべきかどうかという問題があります。 一旦、有効桁数以下は切り捨ててから切り上げするかどうかはそれぞれのシステムの考え方です。 Access には、かような Excel風の関数がありません。 そこで、Excel風の関数の例を紹介した次第です。

s-star
質問者

お礼

具体的な事例あげていただきありがとうございます。 コピペして保存しておきます。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

まず第1にAccess2000にRoundDown関数やRoundUp関数はありません。 ユーザー定義関数を作られたのなら別ですけど Round関数もExcelとは結果が異なると思います。 多分ですが [面積]を数式で出してませんか? [面積]=[高さ]*[幅] ならば [面積]=Int([高さ]*[幅]*100+0.5)/100 で小数点第2位で四捨五入してみてください。

s-star
質問者

お礼

最初にググってみたとき2000以降ならround関数が使える との情報があったため試してみました。 おっしゃられるようにビルドでもroundないですね。。。

関連するQ&A

  • Access97 Int関数

    小数点の切り捨てをしたくてクエリーで 以下の計算をしてみました。 =Int([個数]*[単価]) ところが以下の数値で計算させると結果が 50232となると思うのですが50231となってしまいます。 数量:460 単価:109.2 結果:50231(電卓で計算すると50232) 結果が小数点になるときは問題ないようです。 使い方が間違っているのでしょうか。 こういう場合Int関数を使うのが誤りなのでしょうか? だとしたら他に当てはまる関数があるのでしょうか? ちなみにテーブルの定義としては 数量:長整数型(小数点以下桁数0) 単価:単精度浮動小数点型(小数点以下桁数0) となっていますが小数点は表示されています。

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

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

  • Access のInt関数が変?

    Access2002 windows2000 仮に フォーム名:計算フォーム テキストボックス名:txt答え コマンドボタン:cmd実行 を作ります。 cmd実行をクリックしたとき次の計算を実行さします。 Me![txt答え]=Int(500000*(29.2/100/365)*36) すると txt答え に表示されるのは 14399です。 小数点以下はない筈ですのに切り捨てられたような結果が出てきます。 クエリのビルドを使って計算式を記述し計算さすと 14400になります。 エクセルで試しても 14400になります。 とても悩んでいます。 どちら様か教えていただけませんか?

  • Access2000 小数点以下を2桁表示

    こんにちわ。 アクセスであるテーブルを元にフォームを作成しています。 元データは「123.4567890」となっています。 (倍精度浮動小数点型です。) このデータをフォーム上では「123.45」まで表示したいのですが上手く出来ません。プロパティーの書式で 小数点表示桁数を「2」にしてもダメでした。 どうしたものでしょうか? ご教授ください。。

  • Accessで小数の入力について

    質問させていただきます。 Access2000を使用しております。そこで、フォームを利用してデータを入力するのですが、金額(通貨型)項目に、小数第2位まで入力する必要があります。テーブル、フォームの「小数点以下表示桁数」をそれぞれ ”2”に設定しました。これで入力すると、たとえば ”10.556” と入力すると ”10.56”と四捨五入されるのですが、実際にテーブルを見ると”10.556”で入力されています。 そこで質問ですが、フォームで入力するときに小数以下は2桁しか入力できないようにするにはどのようにすれば良いのでしょうか?3桁以上入力するとエラーを出せればベストです。よろしくお願いします。

  • テキストボックスの書式について(Access)

    Access2003の帳票フォーム上にあるテキストボックスで単価を表示させているのですが、単価が小数点1位まであるものと整数のみのものがあります。これを次のように単価のテキストボックスに表示させたいのですが 例1)単価:100→\100 (\100.0では無い) 例2)単価:99.4→\99.4 <説明> データが整数の場合は整数表示で先頭に¥マークを、データが小数を含む場合は小数を含めた表示で先頭に¥マークを付ける。 どの様な方法があるでしょうか。条件付き書式などが該当するように思えますが、インターネットで調べてもよく分かりませんでした。 VBAのサンプルコードなどご呈示いただければ幸いです。

  • アクセス 関数について

    業務で、アクセスを利用して顧客データ管理してます。 クエリで金額計算を行っていますが、整数をうまく計算できません。 int([金額]*[料率])として販売価格を出すようにしているのですが 料率が70%の場合、1円合わなくなります。 例えば int([43,100]*[70%])とした場合 30,169円と表示してしまいます。 Roundを使ってみると30,170円と表示しましたが、四捨五入されるため、ほかのデータに 1円誤差が生じてしまいます。 試しにfix関数を入れてみましたが、intと同じ結果になりました。 前任者から、社内システムを引き継いだものの アクセス初心者で困っております。 良い解決法をお教えいただけないでしょうか。

  • アクセス2003 計算結果を反映させたい

    当方:XPのoffice2003 です。 アクセスでデータを作っています。 商品名テーブルを作成し、クエリを介して フォームから入力できるようにしています。 たとえば、100g2000円の商品があったとして、 これをgごとに単価を出したいのですが、 (例でいうと、20 という答えを出したい) 本を読んで、フォーム上で自動計算させることは できるのですが、このフォームの数字を そのままテーブルに反映させることはできますか? 集計表を出すときに、クエリで集計表を出して印刷し、 資料にしています。 この集計表に、計算させた単価を表示させたいのですが・・・ 私のやりかたが間違ってるのか、 または違う方法でできるものがあるのか、 教えて頂きたいと思います。 説明不足の部分がありましたら、ご指摘下さい。 よろしくお願いします。

  • Accessでの書式について質問です。

    Accessでの書式について質問です。 フォーム内コントロールにクエリのデータを表示しています。 123.00の様なデータを123.00mmと表示させたいと考えています。 コントロールに =[フィールド名] & "mm" とした場合、 123mmとなってしまいます。 テーブルの書式は123.00となっているのですが、フォームに表示させると小数点以下が消えてしまいます。 うまく123.00mmの様に表示させる方法をご存じの方がおられましたら、アドバイスよろしくお願いいたします。m(_ _)m

  • ACCESSの小数点以下の入力について

    こんにちは。よろしくお願い致します。 ACCESSのフォームで"1.0000"と入力した場合は、テーブルには、"1"としか残りません。表示桁数は4桁にしてあるのですが、小数点以下の最後の数値が"0"、すなわち"1.0000""2.1580"などでも最後の数値までデータとしてテーブルに残す為には、どのようにしたらよいのでしょうか? よろしくお願い致します。

専門家に質問してみよう