チケット #26290

MFIの計算で0除算が発生する時がある

登録: 2011-09-12 00:21 最終更新: 2013-06-30 14:14

報告者:
(匿名)
担当者:
チケットの種類:
状況:
完了
コンポーネント:
(未割り当て)
マイルストーン:
優先度:
5 - 中
重要度:
5 - 中
解決法:
受領
ファイル:
なし

詳細

銘柄3111に対してMFI_new(13)で計算すると0除算が発生した。

runtime error in X:\Protra_2.0\lib\TIlib.pt:1662: divided by 0
エラーが発生したので実行を中断します。

該当箇所は以下
if obj[3][0] == 0.0
	obj[1] = 0.0
else
	obj[1] = 100.0 /  (obj[2][0] / obj[3][0] + 1)
end

発生時の obj[2][0] と obj[3][0] の値は以下の通り
3111 オーミケンシ 98/08/05 obj[2][0] = -1.3992226181122E-13
3111 オーミケンシ 98/08/05 obj[3][0] = 1.3992226181122E-13

(obj[2][0] / obj[3][0] + 1) = 0
となるため、0除算となる。

チケットの履歴 (3 件中 3 件表示)

2011-09-12 00:21 更新者: None
  • 新しいチケット "MFIの計算で0除算が発生する時がある" が作成されました
2013-03-05 14:53 更新者: panacoran
  • 解決法なし から 受領 に更新されました
  • 担当者(未割り当て) から panacoran に更新されました
  • マイルストーン(未割り当て) から バージョン2.0 に更新されました
2013-06-30 14:14 更新者: panacoran
  • 状況オープン から 完了 に更新されました
  • チケット完了時刻2013-06-30 14:14 に更新されました
コメント

これまでProtra言語は、非常に小さな浮動小数点数を0と見なす処理を行っていませんでした。浮動小数点演算では本来0になるはずの値が誤差で0からずれるので、非常に小さな値を0と見なさなければなりません。この処理を#30936で実装しました。これからはobj[3][0] == 0.0が真になるので、0除算は起こらなくなります。

添付ファイルリスト

添付ファイルはありません

編集

ログインしていません。ログインしていない状態では、コメントに記載者の記録が残りません。 » ログインする