2016-09-02 15 views
1

小数点以下4桁の文字列形式のデータをintに変換する必要があります。 は、私はこの1つを試してみましたが、動作しないとさえ直接このConvert.ToInt16()を使用してまだ働いていませんでした:文字列( "1.0000")をintに変換する方法

Int32 result; 
bool status = Int32.TryParse(v, out result); 

はこれを変換する他の方法はありますか?

ありがとうございました。

+0

がConvert.ToInt32を使用してみてください変換することができます()。 –

+2

なぜ 'decimal.TryParse'を使わないのですか? –

答えて

3

'' にあなたが最初の二重に変換し、その後のInt32

String s = "1.0000"; 
Double temp; 

Boolean isOk = Double.TryParse(s, out temp); 

Int32 value = isOk ? (Int32) temp : 0; 
3

次を使用することができます。

string data = "1.0000"; 
int number 
if(data.Contains('.')) 
    number = int.Parse(data.Substring(0, data.IndexOf('.'))); //Contains decimal separator 
else 
    number = int.Parse(data); //Contains only numbers, no decimal separator. 

1.0000は小数点以下の桁、第1のストリップstringからのものがあり、その後、intに文字列を解析しているため。

+0

ポイント(またはカンマ)がない場合は例外がスローされ、10,000,000ではなく10.000.000が解釈されます(グループセパレータとしてポイント付き) –

+0

@TimSchmelter質問は10進数のポイントに関する数字ですセパレータ。これは、ポイントがグループセパレータにならないようにカルチャがあることを意味します。私はポイントの欠如に同意し、改善する – SynerCoder

1

10進数として解析してintにキャストする必要があります。

decimal resultTmp; 
bool status = Decimal.TryParse("1.000".Replace(".",","), out resultTmp); 
int result = (int)resultTmp; 

「。」も変更します。

+2

なぜ変更 '。' 〜 '、'?これは文化に依存します。 – harryovers

+0

はい、CurrentCultureを引数として与える方が良いです。私はそれが正しいフォーマットではないので私はそれを変更しなければならなかった。 – apukineimakiapudjuh

関連する問題