(現在 過去ログ1 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■2 / inTopicNo.1)  数式が入った文字列型項目値からの計算値の取得?
  
□投稿者/ ふくいち -(2005/08/12(Fri) 23:03:15)
    はじめて書き込みさせていただきます。
    桐井戸端会議BBSで質問しようとしたら,休業とのことで,こちらに来ました。
    桐Ver.8です。

    文字列型項目に分数が入っています。
    桐が標準で用意している関数を使用して(一括処理やイベントは使わないで),この分数を小数値に変換は出来ますか?

    具体的に言うと,
    利率が「月当たり15円につき25銭」の様に,
    0.25/15=0.016666・・・・
    と割り切れない場合もあるので,[利率]は文字列型で定義しています。
    [利率]=”0.25/15”
    この場合に,経過日後の利息金を計算したいのです。

    #数値([利息])=0.2515(”/”を無視して変換されてしまう)
    #計算([利息])も”型が一致しません”とエラーになります。

    しかたないので,現在[利率分母]と[利率分子](何れも数値型)の2つの項目に分けていますが,もっとスマートな方法はないでしょうか?

    イベント等では出来そうですが,そこまでやるのなら上記のように項目を分けた方が簡便だと考えています。


引用返信 [メール受信/OFF] 削除キー/
■3 / inTopicNo.2)  Re[1]: 数式が入った文字列型項目値からの計算値の取得?
□投稿者/ 悲しげ -(2005/08/12(Fri) 23:04:45)

    私としては「[利率分母]と[利率分子]の2つの項目」を利用することで
    十分にスマートな気がするのですが、もし文字列型項目の値をこのまま使う
    のであれば、文字列ですから、#部分列関数で「/」の前後を切り分けてから
    分子と分母を取り出す方法などが有り得るかと思います。

    #num(#sstr([利率],1,#文字位置([利率],"/")-1))/#num(#sstr([利率],#文字位置([利率],"/")+1))

    あるいは分子分母の区切りを「/」ではなく「,」を使って「0.25,15」のよ
    うな文字列群にしておけば、#対応文字列関数を使うことができますから、
    計算式の記述はもう少し簡単になりそうです。
    #num(#対応文字列([利率],1))/#num(#対応文字列([利率],2))

    他にも色々な方法がありそうですが、冒頭に述べたように、このような手法
    を使うよりは2項目に分割する方がより「スマート」な気がしてなりません。(^^;)


引用返信 [メール受信/OFF] 削除キー/
■4 / inTopicNo.3)  Re[1]: 数式が入った文字列型項目値からの計算値の取得?
□投稿者/ うにん -(2005/08/12(Fri) 23:08:11)

    もうちょっと複雑な式の場合は、Eval関数が欲しくなりますね。
    ファイルメーカーは7になって追加されました。
    一括処理には「コマンド」があるのだし。

引用返信 [メール受信/OFF] 削除キー/
■7 / inTopicNo.4)  Re[1]: 数式が入った文字列型項目値からの計算値の取得?
□投稿者/ 佐田 守弘 -(2005/08/13(Sat) 18:19:15)
http://www.m-sada.com
    ふくいちさん
    演算結果が割り切れない数になる(数学的には循環小数)になるのが困るとの事
    ですが、桐の数値型および通貨型は、有効数字16桁あり、±10^124乗の範囲が
    扱えます。
    有効数字16桁は、指数を付けなければ1京円に相当します。仮に指数として
    厘の1桁下まで扱っても1兆円の金額が扱えます。
    しかも、内部的にはBCD演算をしているらしいので、実数型演算の様なバイナリ
    演算による誤差は出ないとされています。
    つまり、割り切れない数字が途中で出ても、最終的な演算結果への影響はない
    はずだと思うのですが。
    念のために申し上げますと、表で表示されている割り切れない数はあくまでも
    表示乗の値(切り捨て値らしい)であって、実際に保持されている値は上記の
    有効数字を持った値です。

    なお、ご希望の様に乗数と除数を別々に持っておいて、最終的に除算を行い
    たいのなら、悲しげさん、うにんさんが書かれている様な方法になるでしょう。

引用返信 [メール受信/OFF] 削除キー/
■10 / inTopicNo.5)  Re[2]: 数式が入った文字列型項目値からの計算値の取得?
□投稿者/ 悲しげ -(2005/08/14(Sun) 20:01:05)
    佐田さん wrote

    > つまり、割り切れない数字が途中で出ても、最終的な演算結果への影響はない
    > はずだと思うのですが。

    あ、そうですね。
    最終的には整数値に丸めるでしょうから、当該利率を例えば「0.0166666666」の
    ように任意の(この例では小数点下10桁としていますが要するに余裕を持たせた)
    桁数で入力しておく、と云う手がありますね。
    税法の減価償却の計算(定額法)なんかを思い出しました。例えば6年だと償却率
    は「0.166」で切って計算させますが、最後はとにかく何度も丸めることになるの
    で、細部は十分に吸収されてしまうと云う。(^^;)

    ps.
    ご存じかと思いますが、数値型項目に「0.25/15」と入力して、Enterを打鍵する前
    にShift+F9を推すと、計算されて「0.01666666666666666」となります。

    ps2.
    (以下にあえて全角英字で記述しますが)
    この掲示板では<Enter>のように<>で囲んだ字句は消えてしまうのですね。(^^;)

引用返信 [メール受信/OFF] 削除キー/
■21 / inTopicNo.6)  Re[1]: 数式が入った文字列型項目値からの計算値の取得?
□投稿者/ ふくいち -(2005/08/15(Mon) 11:31:09)
    桐達人者の皆様,ご返答ありがとうございました。

    No4(うにんさんの記事)
    > もうちょっと複雑な式の場合は、Eval関数が欲しくなりますね。
    > ファイルメーカーは7になって追加されました。

    そうそう!そのEval関数です!
    Eval関数にあたるものが桐にはないですか?
    というのが,質問の趣旨でした。

    昔,ACCESSで設計しようとして,さほど苦労しなかったのは,この関数を使用したからでした(すっかり忘れていましたが・・・;ちなみにACCESSでは,Ver.1から使えました)。
    もっとも,ACCESSでは,桐の#直前値()のようにレコード相互の参照が困難で,この点で挫折しました。

    利息の約定といっても,%だったり,何円につき何円だったり,何割何分だったりと様々な表記の方法がありますが,計算結果をレポート出力して某役所に提出することを予定しているので,出来る限り契約書等の表記の仕方で入力=印刷したい,のであります。
    何割何分は不要としても,小数,分数,%のどれでも入力できて,そのとおり印刷されます・・・というシステムにしたかったのです。

    どうやら,桐ではサポートしていないらしいことがわかりました。
    悲しげさんの方法によるか,このまま項目を分けるかもうすこし悩んでみます。

解決済み!
引用返信 [メール受信/OFF] 削除キー/
■36 / inTopicNo.7)  Re[2]: 数式が入った文字列型項目値からの計算値の取得?
□投稿者/ 佐田 守弘 -(2005/08/16(Tue) 22:49:16)
http://www.m-sada.com
    ふくいちさん
    解決済みとの事ですが、
     >小数,分数,%のどれでも入力できて,そのとおり印刷されます
    を希望するのだとしたら、次の様にする方法が究極の方法としてあります。
    
    ●表に作る項目
    [宣言変数]:ここには値を代入して計算式で使用する変数を記述します。例えば
    ・小数の場合: &小数
    ・分数の場合: &分数
    ・%の場合 : &パーセント
    [変数値]: ここにはその行で使用する変数の値に代入する式を記述します。例えば、
    ・小数の場合: &小数=0.03
    ・分数の場合: &分数=3/100
    [計算式]:ここには計算したい計算式通りに文字列で記述します。
    以下は一例ですが、
    ・小数の場合: *&小数
    ・分数の場合: *&分数
    ・%の場合:   *&パーセント/100
    
    そしてこの3つの記述をコマンド・コマンドで実行すれば、目的が達成される
    はずです。分数の場合についての一例として言えば、
     変数削除
     コマンド "変数宣言 数値{"+[宣言変数]+"}" ←変数「&分数」が宣言されます。
     コマンド "代入 "+[変数値]         ←変数に値が代入されます。
     コマンド "行訂正 [利息]=[元本]*[期間]*&分数"
    
    実際には期間についても日なのか月なのかと言った使い分けがあるのだと思い
    ますが、同じ様な考え方で処理できるはずです。
    また、「○割○分」方式も、これを数値に変換する式が1ステップ増えますが、
    同じ方法で処理できると思います。
    そして実際には、処理は1行ずつ行うので、繰り返しコマンドで実行します。
    
    私自身は、「コマンド」コマンドの利用を推奨する派ではないのですが、この問題
    は、まさに「コマンド」コマンドを使うべきケースでしょうね。
    
    佐田 守弘

引用返信 [メール受信/OFF] 削除キー/
■37 / inTopicNo.8)  Re[2]: 数式が入った文字列型項目値からの計算値の取得?
□投稿者/ 悲しげ -(2005/08/16(Tue) 22:58:34)
    解決済みマーク付きの投稿にコメントを付けるのもナンですが・・・(^^;)
    
    >が,計算結果をレポート出力して某役所に提出することを予定しているので,
    >出来る限り契約書等の表記の仕方で入力=印刷したい,のであります。
    
    ははぁ、なるほど。これで背景が読めました。
    ならば、文字列型項目で対処するのが吉でしょうね。
    
    >何割何分は不要としても,小数,分数,%のどれでも入力できて,そのとおり
    >印刷されます・・・というシステムにしたかったのです。
    
    残念ながら現在の桐では、これらに即対応はできないようですから、項目計算式
    でなら、#条件選択関数で場合分けして行くような方法しか思いつきません。
    
     #条件選択(#文字位置([利率],"割") .or #文字位置([利率],"分"),・・★・・
          ,#文字位置([利率],"/"),・・前稿例示式・・
          ,#文字位置([利率],"%"),#num([利率])/100
          ,1,#num([利率]))
    
    ★部の式一例
     #cond(#文字位置([利率],"割")
        ,#nvl(#num(#sstr([利率],1,#文字位置([利率],"割")-1)),0)*0.1)
     +#cond(#文字位置([利率],"分")
        ,#nvl(#num(#sstr([利率],#文字位置([利率],"分")-1,1)),0)*0.01)
     +#cond(#文字位置([利率],"厘")
        ,#nvl(#num(#sstr([利率],#文字位置([利率],"厘")-1,1)),0)*0.001)
    
    *
    
    実は上記は前置きでして(^^;)、本当に書きたかったことは、■No2で例示した
    式の場合、分母相当が未定義またはゼロだった場合の対策が必要かも・・・と
    云う点です。
    

引用返信 [メール受信/OFF] 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Mode/  Pass/

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -