2013-10-25 41 views
0

我在C#一個簡單的代碼轉換爲字符串轉換成int在C#中使用詮釋Convert.ToInt32

int i = Convert.ToInt32(aTestRecord.aMecProp); 

aTestRecord.aMecPropstring。我正在運行的測試中,它的值爲1.15,在string

但上面的代碼會拋出錯誤,指出輸入字符串不是格式!

我不明白爲什麼?

我使用VS 2008的C#

+0

也許轉換第一個翻番,然後爲int的時刻 –

+1

那麼什麼是整數,不能測試它?這是一個*整數*。你有沒有看過C#的數據類型? – Arran

+0

字符串值1.15實際上不是一個整數。這是浮動價值。 – SKJ

回答

0

如果你想驗證一個字符串是一個整數,使用的TryParse()

int i; 
if (int.TryParse(aTestRecord.aMecProp, out i)) 
{ 

} 

i將得到分配,如果的TryParse()成功

0

試試這個:

double i = Convert.ToDouble(aTestRecord.aMecProp); 

或者,如果你想要的整數部分:

int i = (int) Convert.Double(aTestRecord.aMecProp); 
1

一個整數只能表示沒有小數部分的字符串。 1.15包含0.15的小數部分。 你必須把它轉換成浮動保持小數部分,正確分析:

float f = Convert.ToSingle(aTestRecord.aMecProp); 
1

那是因爲1.xx不是整數有效值。你可以轉換爲Int32,樣品前截斷:

int result = (int)(Math.Truncate(double.Parse(aTestRecord.aMecProp)* value)/100); 
0

可以轉換爲加倍,然後強制轉換它

string str = "1.15"; 
int val = (int)Convert.ToDouble(str); 
0

剛剛嘗試這一點,

Int32 result =0; 
Int32.TryParse(aTestRecord.aMecProp, out result); 
0

你需要一個C#等同於JavaScript parseInt函數?我已經使用這個偶爾:

public int? ParseInt(string value) 
{ 
    // Match any digits at the beginning of the string with an optional 
    // character for the sign value. 
    var match = Regex.Match(value, @"^-?\d+"); 

    if(match.Success) 
     return Convert.ToInt32(match.Value); 
    else 
     return null; // Because C# does not have NaN 
} 

... 

var int1 = ParseInt("1.15"); // returns 1 
var int2 = ParseInt("123abc456"); // returns 123 
var int3 = ParseInt("abc"); // returns null 
var int4 = ParseInt("123"); // returns 123 
var int5 = ParseInt("-1.15"); // returns -1 
var int6 = ParseInt("abc123"); // returns null 
0

好,我覺得這是

float d = Convert.ToSingle(aTestRecord.aMecProp); 
+0

應該作爲評論。 – ryderz8