2016-10-06 6 views
0

私はイタリア出身ですので、小数点区切り記号は '、'であり、cyphersはchar 'でグループ化されています。 これを短縮するために、ユーザーがグローバル形式を変更せずに高度な設定を使ってセパレータとグループのcharだけを変更しなければならないときは、数値を処理する必要があります。小数点区切りを強制するときのlong/double/float数の解析

以下の絵を見てみてください。 enter image description here

あなたはフォーマットがまだイタリアが、次の高度な設定を使用していることがわかります。 enter image description here

ので、あなたがにもかかわらず、グローバルなを保つことがわかりますイタリア語の設定私は小数点の区切り文字を '、'とし、サイファーグループのcharを ''にします。

文字列が数値かどうかを判断する必要があります。これを行うには、次のようなs/rを使用します。

public static bool IsNumeric(this string theValue) 
{ 
    long retNum; 
    return long.TryParse(theValue, NumberStyles.Integer, NumberFormatInfo.InvariantInfo, out retNum); 
} 

実際、long.TryParseは失敗します。 theValueが "14.142135624"のときは、retNumの値は0になります。

は、他のNumberStylesとするNumberFormatInfo値を台無しにしようとしたが、任意の助けのために何でも便利

感謝し取得できませんでした。

答えて

1

これは、NumberStyles列挙型とは関係ありませんが、解析しようとしているデータ型とは関係がないことがわかりました。

10進数を含む文字列を整数値型に解析しようとしています。

long.TryParseからdecimal.TryParseに変更する必要があります。それ以外の値は、浮動小数点数では整数ではないため動作しません。

+0

私はNumberStyles(特にAllowDecimalPoint、Any、Float、None、Number)を試してきたと言いましたが、何も働いていませんでした。 – Patrick

+0

それから、浮動小数点数なので、 'decimal.TryParse()'を試してみてください。 – Adwaenyth

+0

素晴らしい!追加のパラメータなしでも動作します:\t return decimal.TryParse(theValue、out retNum);ありがとう!!それに応じて答えを変えて、それを解決できるようにしたいかもしれません。 – Patrick

関連する問題