No.2ベストアンサー
- 回答日時:
FIXは四捨五入ではなく、切り捨てなので、このようなことになります。
VBに限らず、浮動小数点(「NかけるeのM乗」の形で数を表す方式)は、乗除算の際にある程度の誤差を生じます。
Single型の場合、有効桁数は7桁、Double型で15桁です。
で、今回のケースは、この誤差のせいでFixの内側が1535.99999…になってしまっているのでしょう。
で、これをFix関数で変換すると、.9999の部分が切り捨てられて、1535になってしまうわけです。
解決策ですが、一旦、値を通貨型に変換すると良いです。
Fix(Val(20) * CCur(Val(76.8)))
このように書くと、浮動小数点の掛け算ではなく、通貨型の掛け算として扱われるので、計算の誤差が発生しなくなります。
また、変数を宣言するときに、
dim a as Currency, b as Currency
のようにしておき、
a=val("20"): b=val("76.80")
c=fix(a*b)
のようにしても良いです。
小数点以下に厳密さを要求するときは通貨型を使う!!
っていうふうに覚えておくと、この手のトラブルを未然に防ぐことが出来ると思います。
すごーい丁寧に教えてくださって、ありがとうございますっ!
小数型は、doubleか、singleがほとんどで、
かれんしー(英語、長いので略・・・)は、
いまいち使い方がわかりませんでしたー。
これを機にいっぱい調べられて、しかも教えていただいて、
すごく勉強になりました!
本当にありがとうございます!!
No.3
- 回答日時:
なるほど掛け算でしたか。
推測できなくてすいませんでした。
回答はARCさんのとおりですから、私は、VBの誤差について書かれたマイクロソフトのページを紹介しておきます。
参考URL:http://www.microsoft.com/mscorp/worldwide/japan/ …
こちらこそー(^^;
ほんと、ごめんなさい。++ありがとうございました!
そっか、microsoftに行けばけっこういろんな情報が集まりますよね。
早速見てみました。
さらに詳しく、知識を深められて、よかったです~!!
ありがとうございました。
No.1
- 回答日時:
質問が良くわからないのですが
a = 20
b = 76.80
であれば、
val(a)+val(b)
は、96.8
fixは小数点以下切り捨てなので、96
1535は、どこから出てきた値なのでしょう?
なお、四捨五入は、0.5を加算した値に対して、切り捨てをすれば、OKです。
VB6では、Round関数がありますが、日本での四捨五入とはちょっと違います。
ありがとうございます!+ごめんなさい
急いでかき間違えました。
val(a) * val(b)
の間違えです~(;;
ほんと、ごめんなさい。
私も、0.5を足したり、0.1をたしたり、formatしてみたり、
あと、roundも使ってみたのですが、小数点二桁の切り捨てって、
いつもうまくいかないんです~(vv;
さっそくの回答、ありがとうございますっ。
とってもうれしかったです!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
許せない心理テスト
私は「あなたの目の前にケーキがあります。ろうそくは何本刺さっていますか」と言われ「12本」と答えたら…
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
VB6.0での小数点の扱いについて
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
今投稿して解決したのですが 更...
-
5%割引の際の、小数点以下の扱...
-
C言語で
-
COBOLの計算方法
-
エクセルでの小数点以下切り捨...
-
Excel有効数字の丸め方「0捨1入」
-
小数点第2位の切捨て(エクセル...
-
なぜ消費税10%は×1.1なのですか...
-
アホな質問なのですが、30分を0...
-
電卓で指数計算できますか?
-
時給制の業務委託時、請求書の...
-
高速料金を請求する場合の消費...
-
3980円の税込はいくらですか? ...
-
480円の税込は何円ですか? 急...
-
ビジネス上で、内掛け・外掛け...
-
生産の「時間当たりの出来高」...
-
「消費税は別途」の解釈
-
至急!Macのキーボード、×の記...
-
2200万円の税抜き価格の計算の...
-
上代の算出方法を教えて!
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
5%割引の際の、小数点以下の扱...
-
今投稿して解決したのですが 更...
-
駐車場賃料の日割り計算について
-
エクセルでの小数点以下切り捨...
-
Access 1000以下を切り捨てる関数
-
Excel有効数字の丸め方「0捨1入」
-
COBOLの計算方法
-
端数処理における「小数以下」...
-
負の数の四捨五入の方法
-
数字の下二桁を削除したい
-
勤務の稼働時間の計算がわかり...
-
ACCESSの切り上げ
-
50銭以下切り捨て51銭以上切...
-
雇用保険料の計算式について(E...
-
切り捨てて百の位までのがい数...
-
小数点 第n位 を切り上げ,切り捨て
-
「未満と以上」使う範囲。
-
エクセルの関数について。 残業...
-
小数点第2位の切捨て(エクセル...
-
右ビットシフト
おすすめ情報