過去の桐井戸端BBS (桐ver.8)
15759 独特な桁合わせ(ある数値に対する精度の%での表示方法)についてうまく出来ません YATA 2002/04/18-16:31
いつも、大変参考にさせて頂いております。
ところで今回少し変な桁あわせをする必要が出てきたのですが、どうもうまく行きません。
どなたか、お知恵を拝借お願いいたします。
<内容>
ある数値に対する精度を%で計算しております。
5本でワンセットですその値は
&ERR[1]〜[5]の中に入っております。
(例えば0.05とか0.1とか0.03等)
問題はこれからですが、各々のデータによって表示方法に少しクセがあります。
まず数値で0の場合は"±0%"です。それ意外の端数が出るものは、
基本的に小数点以下1桁四捨五入で合わせますが、±0%と区別する為に小数点以下
2桁目以降で数字がある場合は、符号と0.0%等と表記します。
<例>
0.1の場合は"+0.1%" -0.05の場合は"-0.1%" 0.03の場合は"+0.0%"

そこで基本的に考えたのが、まず大雑把なところで、値がジャスト0かそれ以外かでフィルターをかけ、
それ以外は小数点1・2・3桁目等と順次四捨五入するポイントを変えて、
結果が0以外になったものに対して、文字列に変換して処理する方法を思いついたのですが、どうもうまく動きません。
おかしな事をしているようであればご指摘下さいますようお願いします。

<未完成の一括処理>

    繰り返し &回数=1,&パラメータ
     ケース開始
       ケース(&ERR[&回数]=0)
   代入&ER[&回数]="±0%"
       ケース(&ERR[&回数]≠0)
     繰り返し
           &判断値=#四捨五入( &ERR[&回数] , &内回数 ) 
           メッセージボックス #文字列(&判断値)
           条件(&判断値≠0) 繰り返し中止
           &内回数=&内回数+1
          繰り返し終了                     
           代入&ER[&回数]=#条件選択( #部分列
           ( #部分列(#文字列( &判断値 ) , 1 , 4
            ) , 1 , 1 )="-" ,#部分列( #文字列(
           &判断値 ) , 1 , 4 )+"%" ,1 , "+"
           +#部分列( #文字列( &判断値 ) , 1 , 3
            )+"%" )
       ケース終了                         
    繰り返し終了                           
      置換[ER5V]=&ER[1]
      置換[ER4V]=&ER[2]
      置換[ER3V]=&ER[3]
      置換[ER2V]=&ER[4]
      置換[ER1V]=&ER[5]

このような感じで組みましたが、小数点以下2桁めに5以上の数字が有っても
四捨五入で繰り上げてくれずに、0.08は"+0.0%"になってしまいます。

15760 Re:独特な桁合わせについてうまく出来ません Ogo 2002/04/18-18:47
記事番号15759へのコメント

数値であるべき変数と文字列であるべき変数を混同してますね。
&ERR[&回数] が数値型が文字型かさえ理解不能なのです。
(ある箇所では数値として比較しているし、ある箇所では文字列
を代入しようとしている――これでは正しい結果を望む方が無理)。

また、主旨がよく判らないのは「精度」をデータとして持っているのならば、

>0.1の場合は"+0.1%" -0.05の場合は"-0.1%" 0.03の場合は"+0.0%"

0.1 なら 1*10^-1 だし、-0.05 なら 1*10^-2 だし、 0.03 でも
1*10^-2 のはずですが。

「誤差」をデータとして持っているなら、誤差を小数1桁までで
標記するという前提でまぁ判らんでもない(それでも、精度を考えるような内容の数値ならば、
0 は 当然 -0.005<観測数値<0.005の筈だから、丁度 0 のみを ±0 と特別視するのは、
根本的に数値の性格に対する理解がおかしい筈)。

が、まぁそれは別途考慮してもらうとして。
数値は「精度」ではなく、「誤差」だとして、しかもそれを小数1桁で
丸めるとします(質問文からはそうとしか受け取れない)。

>ある数値に対する精度を%で計算しております。5本でワンセットですその値は
>&ERR[1]〜[5]の中に入っております。(例えば0.05とか0.1とか0.03等)

データの未入力チェックは既にこの時点で完璧にできているのですね?

従って、目的とする数値が [数値] 項目の項目値とします。

#条件選択([数値]=0,"±0%",
 1,#条件選択([数値]<0,"+",1,"-")
  +#文字列(#四捨五入(#絶対値([数値]),1),1)+"%")

この計算式で「文字列」が手に入る筈。
もちろん、「文字列」を数値型の 項目値・変数値 として用いることは
不可能ですので、これの受け皿(項目・変数)は別途必要です。

# 最近、学校教育で「円周率を3として云々」とかいう話が出て来て
# 驚かされるが、そんなもの、必要とする答えの有効桁数によって、
# 円周率の有効桁数を増減するだけの話だということに、何故言及が
# ないのだろう。中1の1学期冒頭の理科で習ったはずだが。


15773 Re:独特な桁合わせについてうまく出来ません YATA 2002/04/19-16:27
記事番号15760へのコメント
ご指導有難うございました.おかげさまで問題は解決いたしました。

戻る