0

別のプログラムからのデータを読み書きするプログラムを作成しました。プログラムで値 7 (メモリ実数型) を設定し、ビジュアル スタジオで値を読み取ると、 string が返されます7.0000000000000。そこで、int型のデータに対して機能するこの変換スニペットを作成しました。これは、VSで文字列も提供します。これら 2 つのデータ型の違いはわかりませんが、論理的には、両方のデータ型からstringが返された場合、このコードを実行できるはずです。ここでメモリの実際のデータが if をスキップするのはなぜですか?

 if (Regex.IsMatch(value, "^[0-9 ]+$"))
                {
                    ValueBox.Text = Double.Parse(value).ToString();
                }
                else
                {
                    ValueBox.Text = value;
                }

編集:指定された2つのdllを使用しています.dllに変換の問題があると思いますが、コードは引き続き機能するはずです.

編集 2: このコードは私のプログラムのセクションであり、値とその他の変数は既に定義されています

4

3 に答える 3

6

正規表現をスキップして、TryParseを使用します

Double.TryParseメソッド

Int32.TryParseメソッド

または単に「N0」をフォーマットすることができます

d.ToString( "N0")

于 2012-10-11T19:53:03.640 に答える
0

valueあなたの質問は、どこから来たのかを明確に説明していません。

.ToString()元のデータ型を に変換するには、オーバーロードされたメソッドのいずれかを使用する必要があると思いますvalue
次に、使用を元に変換ValueBox.TextしますConvert.ToDouble()(または、目的の出力タイプに適した方法)。Double.TryParse()私が好む(または適切なタイプ)を使用することもできます。

参照: Double.ToString メソッド (文字列)
標準数値書式文字列
カスタム数値書式文字
列 Double.TryParse メソッド (文字列、Double%)

于 2012-10-11T20:03:54.643 に答える
0

数値範囲の後に正規表現に余分なスペースがありますが、それほど問題にはなりません。それが書かれている方法では、正規表現は数字またはスペースの任意のシーケンスと一致します。

これは整数文字列のみに一致します。

if (Regex.IsMatch(value, "^[0-9]+$"))
...

これが の初期化に基づく問題かどうかはわかりませんがvalue、整数文字列とは一致しません。

正規表現で小数値を考慮する必要がある場合:

if (Regex.IsMatch(value, "^[0-9]+(\.[0-9]+)?$"))
...
于 2012-10-11T19:48:58.863 に答える