計算結果にゴミが混入?

返信する
knmt
記事: 6
登録日時: 8月 23, 2014, 9:27 pm

計算結果にゴミが混入?

投稿記事 by knmt »

vlookup関数使用中に正体不明の #N/A に襲われました。
A B
0.0 3
0.1 5
0.2 7
...
0.9 8
上記、10行2列の行列から、
=vlookup(数値;A1:B10;2;0)
としたいときに、
数値=mod(int(rand()*10)/10+(他の計算結果0.0, 0.1, ..., 0.9);1)
数値=mod(round(rand();1)+(他の計算結果0.0, 0.1, ..., 0.9);1)
数値=(int(rand()*10)/10+(他の計算結果0.0, 0.1, ..., 0.9))-int(int(rand()*10)/10+(他の計算結果0.0, 0.1, ..., 0.9))
どちらの式を使っても、
時々 #N/A となります。
小数点1位の数値で行列を参照したいのですが、回避策とOOoのバグ修正の期待は不可能でしょうか。
Apache OpenOffice 4.1.0 AOO410m18(Build:9764) - Rev. 1589052
Windows 7 Home Premium Microsoft Windows Ver 6.1 (Build 7601: Service Pack 1)
pocota
記事: 32
登録日時: 6月 13, 2014, 4:10 pm
お住まい: 千葉県松戸市

Re: 計算結果にゴミが混入?

投稿記事 by pocota »

まず、定義された10行2列の行列の途中がわかりません。
B列は(2n+1)だと思うのですが、なぜ10行目で8になるのでしょうか。
AOO 4.1.1 (OS X Yosemite 10.10.2)
AOO 4.1.1 (Windows 7)
knmt
記事: 6
登録日時: 8月 23, 2014, 9:27 pm

Re: 計算結果にゴミが混入?

投稿記事 by knmt »

すみません、
行列の中身には意味は有りません。
任意の値でvlookupが可能ならば何でも可です。
実際の値は非公表で伏字のつもりです。
本件の問題は、
vlookupに適用外の結果が計算途中で発生する事で、
下記の計算が質問の主旨です。
> 数値=mod(int(rand()*10)/10+(他の計算結果0.0, 0.1, ..., 0.9);1)
> 数値=mod(round(rand();1)+(他の計算結果0.0, 0.1, ..., 0.9);1)
> 数値=(int(rand()*10)/10+(他の計算結果0.0, 0.1, ..., 0.9))-int(int(rand()*10)/10+(他の計算結果0.0, 0.1, ..., 0.9))
> どちらの式を使っても、
> 時々 #N/A となります。
本件は、トピックの
 mod関数と算数
とも関連し、その回避策を試行中に発生しました。
Apache OpenOffice 4.1.0 AOO410m18(Build:9764) - Rev. 1589052
Windows 7 Home Premium Microsoft Windows Ver 6.1 (Build 7601: Service Pack 1)
pocota
記事: 32
登録日時: 6月 13, 2014, 4:10 pm
お住まい: 千葉県松戸市

Re: 計算結果にゴミが混入?

投稿記事 by pocota »

話が抽象的なので想像ですが、他の計算結果に依存するのではないでしょうか。
ちょっとしたサンプル例を添付していただければ、もっとよくわかるのですが……。
AOO 4.1.1 (OS X Yosemite 10.10.2)
AOO 4.1.1 (Windows 7)
knmt
記事: 6
登録日時: 8月 23, 2014, 9:27 pm

Re: 計算結果にゴミが混入?

投稿記事 by knmt »

A列 B列
0.0 0
0.1 8
0.2 7
0.3 5
0.4 3
0.5 2
0.6 1
0.7 6
0.8 9
0.9 4
vlookupにて
演算結果の小数点第1位の値から
A列と比較してB列の値を参照したい。
B列は任意の値を使用可。
演算は以下の式を使用。
式1 数値=mod(int(rand()*10)/10+(他の計算結果0.0, 0.1, ..., 0.9);1)
式2 数値=mod(round(rand();1)+(他の計算結果0.0, 0.1, ..., 0.9);1)
式3 数値=(int(rand()*10)/10+(他の計算結果0.0, 0.1, ..., 0.9))-int(int(rand()*10)/10+(他の計算結果0.0, 0.1, ..., 0.9))
ただし、(他の計算結果0.0, 0.1, ..., 0.9)はA列の値のどれか一つと等しい値。
四捨五入をn捨n+1入として可変させるため。
式1、式2、式3の結果はいずれもA列の値のどれか一つになるのを期待している。
しかしながら、時々(!)(あくまで時々である)#N/Aとなった。
この#N/Aを回避しようと試行した結果が、
式1→式2→式3なのだが、
結果は同様だった。
ここから、
別件で関連項目の「mod関数と算数」となる。

以上が本件投稿の原因です。
けれども、
これも現在は再現不可能なようです。
試したら...
rand() 0.692938437
四(n)捨五(n+1)入 0.5000000000000000
式1 0.1000000000000000
式2 0.2000000000000000
式3 0.1000000000000000
上記の小数点以下第2位以降は値0で正しいのですが、
当時は何故か十進二進変換の誤差のような値が混入していました。
Apache OpenOffice 4.1.0 AOO410m18(Build:9764) - Rev. 1589052
Windows 7 Home Premium Microsoft Windows Ver 6.1 (Build 7601: Service Pack 1)
返信する

“フォーミュラ(数式)やチャート(グラフ)”に戻る