3 返信 最新の回答 日時: May 9, 2012 9:02 PM ユーザー:shin

    指数表記について教えてください

    a-hashimoto

      始めて投稿させて頂きます。

       

      現在FileMakerPro11にてツールを作成しているのですが、大きい金額(0が10個以上連続するもの)を入力すると、指数表記(1.0e+10)というような形で表示されてしまいます。

       

      いろいろなサイトを確認したところ、編集ボックスのデータの書式設定で書式を「入力モードそのまま」にすれば、指数表記されないとありました。

      この通り実施した際には指数表記にならず10000000000と表示されました。

       

      ここまではよかったのですが、少しツールを拡張し下記の表の様なレイアウトを作成しました。

       

      項目名フィールドのタイプフィールドのオプションレイアウトのデータ書式設定
      個数数字
      入力モードそのまま
      単価数字
      通貨、3桁区切りを使用
      合計数字計算値自動入力 個数×単価通貨、3桁区切りを使用




       

      個数と単価をそれぞれ100000と入力すると合計は10000000000と表示されるのですが、合計を手入力しようとすると1.0e+10と表示されてしまいます。

       

      入力時にも10000000000と表示する方法はございますでしょうか?

      (合計なので入力不要でいいのでは?との話もあるかと思いますが、どうしても計算した結果に対して手入力で修正をしたいので、このような質問をさせて頂いております。)

       

      アドバイス等頂けましたら幸いです。

      どうぞよろしくお願いいたします。

        • 1. Re: 指数表記について教えてください
          shin

          テキスト形式で計算結果を自動入力するといいですが、FMは、大きな数値の計算結果を指数フォーマットで返してきているようです。ですから、表示がどうであれ、そのフィールドがアクティブになると入力された値、すなわち、指数フォーマットで表示されることになります。

          それを算術表記にするためには、もう一度その表示のテキストを生成してやる必要があるようです。

          ちょっと面倒ですが、下の式を自動入力に設定してやると良いでしょう。(自然数だけでしたら、もっと簡単な式でいいのですが、小数と負数が入ると面倒ですね)

           

          Let (
          [
          n =  Abs ( 個数 * 単価 ) ;
          I = Int ( Log ( n ) ) ;
          F = n / ( 10  ^ I ) ;
          lenF = Length ( F ) - ( Length ( F ) > 1 )
          ];
          Choose( Sign ( n1 * n1 コピー ) + 1 ; "-" ; "0" ; "" )
          &
          Case (
            lenF ≥ I ; Replace ( Substitute ( F ; "." ; "" ) ; I + 2 ; 0 ; "." ) ;
            Substitute ( F ; "." ; "" ) & Substitute ( ( 10 ^ ( I + 1 - lenF ) ) - 1 ; "9" ; "0" )
          )
          )

          • 2. Re: 指数表記について教えてください
            a-hashimoto

            ご連絡ありがとうございます。

            shin様に記載頂きました内容で試してみましたところ、やりたいことが実現できました!!

             

            小数とか負数についてはご回答頂きましたものをベースに対応してみようと思います。

             

            ご回答くださいましてありがとうございました。

             

            以上です

            • 3. Re: 指数表記について教えてください
              shin

              小数、負数も対応していますよ。

              自然数だけの対応が不要でしたら、2行くらいで済んでいます。