none
RangeValidatorのDouble型の扱いについて RRS feed

  • 質問

  • VB .Net2003で開発中です。

     

    プログラムの中で、動的に生成したテキストエリアでDoble型の数値範囲チェックをしようとしています。

    ここで、Double型の扱いなのですが、実数型しか認識できないのでしょうか。

    つまり、1.2E-10とか2.3E+10などの入力を自動的に倍精度型浮動小数点として認識する方法はないものでしょうか。

    ちなみに、以下のサンプルでテストしたところ、指数表記の認識は出来ないようです。

     

    例を探してもInteger型の場合のみばかりですが、

    倍精度(指数表記)等を扱ったWebフォームによる数値チェックは一般的でないのでしょうか?

     

    XPathにより、指数表記のデータを数値のように範囲を指定して検索しようと考えています。

    こちらも併せてアドバイスいただけると幸いです。

     

    基本的な質問で恐縮ですが、ご教授お願いいたします。

    2007年8月15日 1:38

回答

  •  msdn.bambino さんからの引用

    ちなみに、以下のサンプルでテストしたところ、指数表記の認識は出来ないようです。

    それはどこにあるのでしょうか。

     

    Double.Parse メソッド (String)
    http://msdn2.microsoft.com/ja-jp/library/system.double.parse(VS.80).aspx
    とToStringなどを使って小数表記にして扱えばよいのではないでしょうか。

    Currency(System.Decimal)型を使うというのもあります。

    またはCustomValidator クラスを使うとかはどうでしょうか。

     msdn.bambino さんからの引用

    例を探してもInteger型の場合のみばかりですが、

    倍精度(指数表記)等を扱ったWebフォームによる数値チェックは一般的でないのでしょうか?

    そもそもDouble型で正確にあらわせる実数はたとえ0から1の間の有理数の中だけ考えてもとても少ないので、納得のいく精度で数値として比較するのなら結局文字列の解析と比較とかになってしまうのではないでしょうか。
    2007年8月15日 2:36

すべての返信

  •  msdn.bambino さんからの引用

    ちなみに、以下のサンプルでテストしたところ、指数表記の認識は出来ないようです。

    それはどこにあるのでしょうか。

     

    Double.Parse メソッド (String)
    http://msdn2.microsoft.com/ja-jp/library/system.double.parse(VS.80).aspx
    とToStringなどを使って小数表記にして扱えばよいのではないでしょうか。

    Currency(System.Decimal)型を使うというのもあります。

    またはCustomValidator クラスを使うとかはどうでしょうか。

     msdn.bambino さんからの引用

    例を探してもInteger型の場合のみばかりですが、

    倍精度(指数表記)等を扱ったWebフォームによる数値チェックは一般的でないのでしょうか?

    そもそもDouble型で正確にあらわせる実数はたとえ0から1の間の有理数の中だけ考えてもとても少ないので、納得のいく精度で数値として比較するのなら結局文字列の解析と比較とかになってしまうのではないでしょうか。
    2007年8月15日 2:36
  • 試してみたサンプルは、CustomValiationクラスの説明で提示されているものです。

     

    http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpref/html/frlrfSystemWebUIWebControlsCustomValidatorClassTopic.asp

     

    CustomValidationで値をチェックすれば、実装できました。

     

    しかしながら、RangeValidatorでわざわざデータ型にDouble(倍精度浮動小数点数型)を設定しているのに、

    なぜ、指数表記を認識できないのかと単純に疑問に思ってししまう次第です。

    文字列で解析する方法もあるのでしょうが、

    マニュアルでやらなければならないほど、指数表記は特別な表記ではないような気がするのは、

    私だけなのでしょうか。。。

     

    ともあれ、アドバイスありがとうございました。

     

    2007年8月15日 6:35