Access2002 windows2000
仮に フォーム名:計算フォーム テキストボックス名:txt答え コマンドボタン:cmd実行 を作ります。
cmd実行をクリックしたとき次の計算を実行さします。
Me![txt答え]=Int(500000*(29.2/100/365)*36)
すると txt答え に表示されるのは 14399です。
小数点以下はない筈ですのに切り捨てられたような結果が出てきます。
クエリのビルドを使って計算式を記述し計算さすと 14400になります。
エクセルで試しても 14400になります。
とても悩んでいます。
どちら様か教えていただけませんか?
No.3ベストアンサー
- 回答日時:
こんにちは。
私も小数点以下の誤差には悩まされました。
で、誤差を無くすには、計算結果を[貨幣型]の変数に一度格納するとうまくいきます。
(ヘルプで[Fieldsize]を検索して、一番最後の[ヒント]を参照してください)
こちらで確認した内容
----------------------------------------------------------------------
Dim ANS_1 As Currency
'
ANS_1 = 500000 * (29.2 / 100 / 365) * 36
Me![txt答え] = Int(ANS_1)
Me![txt答え1] = ANS_1
Me![txt答え2] = 500000 * (29.2 / 100 / 365) * 36
Me![txt答え3] = Int(500000 * (29.2 / 100 / 365) * 36) - _
(500000 * (29.2 / 100 / 365) * 36)
Me![txt答え4] = ANS_1 - (500000 * (29.2 / 100 / 365) * 36)
各値の結果
Me![txt答え] :14400
Me![txt答え1]:14400
Me![txt答え2]:14400
Me![txt答え3]:-0.99999999999965
Me![txt答え4]:0
----------------------------------------------------------------------
または、全ての要素を[貨幣型]の変数にしても良いようです。
----------------------------------------------------------------------
Dim SET_1 As Currency
Dim SET_2 As Currency
Dim SET_3 As Currency
Dim SET_4 As Currency
Dim SET_5 As Currency
Dim ANS_1 As Currency
'
SET_1 = 500000
SET_2 = 29.2
SET_3 = 100
SET_4 = 365
SET_5 = 36
ANS_1 = SET_1 * (SET_2 / SET_3 / SET_4) * SET_5
Me![txt答え] = Int(ANS_1)
Me![txt答え1] = ANS_1
Me![txt答え2] = SET_1 * (SET_2 / SET_3 / SET_4) * SET_5
Me![txt答え3] = Int(SET_1 * (SET_2 / SET_3 / SET_4) * SET_5) - _
(SET_1 * (SET_2 / SET_3 / SET_4) * SET_5)
Me![txt答え4] = ANS_1 - (SET_1 * (SET_2 / SET_3 / SET_4) * SET_5)
各値の結果
Me![txt答え] :14400
Me![txt答え1]:14400
Me![txt答え2]:14400
Me![txt答え3]:0
Me![txt答え4]:0
----------------------------------------------------------------------
ではでは・・・
No.4
- 回答日時:
他の型の回答のように、小数を扱うと誤差が生じることがあります。
また、#3の方のようにすべて、通貨型にすることで誤差はなくなります。
そこで通貨型を使うのですが、具体的な数値であれば@で通貨型、というような指定が出来ます。
Me![txt答え]=Int(500000@ * (29.2@ / 100@ / 365@) * 36@)
これで誤差が出なくなります。ただ、通貨型は小数点以下は4桁しか扱えません。
ちなみに、Roundは、ExcelのROUND(四捨五入する関数)とは少し違う関数です。
No.2
- 回答日時:
内側の括弧の中を計算すると0.0008になりますよね。
これを二進数で表すと無限に続く少数となります。ですから、有限の小数で表せば必ず
切り捨てられる部分が出てきます。これが最後まで計算しても尾を引いていて、きっちり
した数にならなかったのだと思います。
Me![txt答え]=Int(500000*36/(365*100*10/292))
としたらどうでしょう。
ご回答有難うございます。
大変参考になりますが有限の小数の意味がいまいちわかりません。
Me![txt答え]=Int(500000*36/(365*100*10/292))
説明のためこの値にしたのですが、この値は365と100は変化しませんが500000、36、29.2は変化するのですが、この式にするとどのような値でも有限の小数となるのでしょうか?
No.1
- 回答日時:
INT関数は切り捨てです。
また、電卓で計算しても、計算順序によっては端数が出ます。
ちなみに500000/365を先に計算すると、1439.999999になりました。
また、計算機内では十進で計算するのではなく二進で計算するので、変換誤差が生じますので、INTは通常使用しません。エクセルではROUNDを使用するのですが、アクセスでもあるかどうかは、自信有りません。
早速ご回答いただき有難うございます。
計算順序によって端数が出るとは気がつきませんでした。
調べてみますとROUNDがありました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- Excel(エクセル) エクセル VBAでセル内容を別の列の最下行に転記したい 2 2022/11/29 08:47
- C言語・C++・C# プログラミングのペーパーテスト 実行結果を表示せよ #include <stdio.h> int h 1 2022/07/09 15:27
- Excel(エクセル) エクセルのSUM関数について 4 2023/04/18 10:37
- 会計ソフト・業務用ソフト エクセルについて 1 2022/06/15 17:39
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- C言語・C++・C# プログラミング実行後に表示される値を答えよ #include <stdio.h> void main 4 2022/05/28 10:20
- Visual Basic(VBA) visual basic初心者です。 visual studioで電卓を作成しています。 実行時にテ 1 2023/02/08 00:18
- C言語・C++・C# 3×3のラテン方陣をつくるプログラムを作成したのですが、(↓) #include <stdio.h> 5 2023/07/10 01:53
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
高校の因数分解 x^2-4x-y^2-6y-5
-
cosx/sinxの積分を教えてください
-
絶対値不等式を二乗して解く
-
a,b,c,d,eの5つの玉を次のよう...
-
逆三角関数で90度以上の算出法...
-
【急募】答えが10になる定積分...
-
至急!因数分解答え並べ方!
-
数学の問題
-
exp(x^2) の微分と積分の答え...
-
non-unique solutionとは?
-
連立不等式の答えの書き方について
-
2けたの正の整数のうち、3の...
-
数学とかで、答えの下に線を引...
-
偏微分についてです。
-
媒介変数表示でtを消去した式で...
-
因数分解
-
小町算のやり方 教えて下さい。
-
11 人を次のようなグループに分...
-
数学(答案の論理構造)
-
定積分、どうやっても答えと合...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
高校数学
-
数学とかで、答えの下に線を引...
-
【急募】答えが10になる定積分...
-
不定積分において積分定数を省...
-
絶対値不等式を二乗して解く
-
至急!因数分解答え並べ方!
-
逆三角関数で90度以上の算出法...
-
2けたの正の整数のうち、3の...
-
答えが「29」になるすごく難し...
-
連立方程式について質問です。 ...
-
答えが0になるめちゃくちゃ難し...
-
小町算のやり方 教えて下さい。
-
exp(x^2) の微分と積分の答え...
-
小6算数の問題です。教えてく...
-
2√9はなんですか?
-
数学です。時速52キロで45分間...
-
答:略
-
高校1年の化学です! 物質量の...
-
白玉5個、赤玉n個の入っている...
-
数字の上の線ってなんですか?...
おすすめ情報