
VB6のFIX関数を使用すると次の事象が発生しました。
私自身で制限事項等を調べてみたのですが、探す事が
できませんでした。FIX関数へは、DOUBLE型の数値また
は数式を入れる構文となっていますが、今回はDOUBLE型
への明示的な変換は行っていませんでした。しかし、VB6
はデータ型をあまり意識しなくても良い仕様の言語である
ので内部的にDOUBLE型へ変換しているのであれば誤差が
あるのは矛盾していると思います。
マイクロソフトのサポートもVB6については終了している
ので個人的に聞いてもだめでした。
また、VS2005で同じFIX関数を試してみると正確な値が戻
ってきました。
以上、よろしくお願いします。
FIX(7520*0.15) を実行すると「1127」が表示されます。
実際は、「1128」なのですが1円の誤差が発生します。
FIX(DOUBLE(7520*0.15))を実行すると「1128」が表示され
ます。
※ 実行環境 OS:Windows XP SP2、
Visual Basic Ver 6 Professional SP5
No.2ベストアンサー
- 回答日時:
つい最近似たような質問をどこかで見かけたと思ったら以下の所にありましたので
こちらもご覧になってみてはいかがでしょうか。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.ph …
No.3
- 回答日時:
コンピュータの演算誤差については、下記ページが参考になるかと
(探せば、もっといいサイトもあると思うが^^;)
http://www.geocities.co.jp/SiliconValley/4334/un …
No.1
- 回答日時:
確かに 即値で書いた場合は誤差が発生するようです
Fix( 7520 * 0.15 ), Fix(CDbl(7520) * 0.15 ), Fix( 7520 * CDbl(0.15))
すべて 1127でした
0.15を 通貨型(Currency)にして計算計算してやると上手くいきます
また 最初に Double型の変数に代入してからFixに渡すと 1128を返すようです
どこかで精度落ちしてるのでしょう
CDbl(7520) * CDbl(0.15) - CDbl( 7520* 0.15 ) を実行すると
-4.17443857259059E-14 といった微小な誤差が出ているようです
ありがとうございました。
7520はCurrencyにしていたのですが、
0.15は定数にしていたのでDouble型の
変数となっていた為の誤差でしょうか。
修正して確認してみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- C言語・C++・C# C言語のマクローリン展開ローラン展開のコードについて 3 2022/12/15 14:45
- 統計学 加重最小二乗法=①「変数を自然対数変換」=②「誤差項の分散の逆数を重み付け」? 8 2022/11/26 11:15
- Visual Basic(VBA) VBAでのMATCH関数 3 2022/10/17 19:06
- 一戸建て 最低限の窓の数だと採光はどうなりますか? 新築を建てる場所が準防火地域のため、窓の数を最小限にしたい 6 2022/07/18 23:44
- C言語・C++・C# LU分解法のピボット選択機能実装について(C言語・gcc-9) 1 2022/07/22 15:20
- Excel(エクセル) [Excel2016] 相関表等の自動作成 2 2022/08/01 20:34
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
三菱シーケンサ(Aシリーズ)で...
-
16進数とかわからないです
-
”/”を使わずに割り算したいんで...
-
EXCELの関数"STDEV(標準偏差)"...
-
乱数について
-
VB6.0での小数点の扱いについて
-
有効数字について 以前質問をし...
-
C言語の実数演算の速度は、値に...
-
計算の丸め誤差の解消について
-
除算を使わずに10で割りたい。
-
2進数データのビット演算
-
c languageで 簡単な質問があ...
-
16進数 加算 減算 C言語
-
BCD・HEX・BINについて
-
VBAでの割り算の余りの求め方
-
CRCの計算方法について
-
差分積分、数値積分の誤差について
-
距離から緯度経度を求める方法
-
正弦波の波形について
-
浮動小数点演算を固定小数点演...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
O(n log n)について2
-
有効数字について 以前質問をし...
-
三菱シーケンサ(Aシリーズ)で...
-
ExcelでPC(パソコン)によって...
-
c languageで 簡単な質問があ...
-
ExcelのINT関数の計算結果がお...
-
VB.net Double と...
-
VBAでミリ秒まで出力する方法
-
16進数 加算 減算 C言語
-
EXCELの関数"STDEV(標準偏差)"...
-
floatの有効桁数
-
除算を使わずに10で割りたい。
-
計算の丸め誤差の解消について
-
VB6.0での小数点の扱いについて
-
コンピューターは指数関数をど...
-
2038年問題 日付算出
-
時刻の比較
-
2進数、16進数、10進数のことを...
-
浮動小数演算は実行環境の変化...
-
2進数の足し算(C言語)
おすすめ情報