我在C#一個簡單的代碼轉換爲字符串轉換成int在C#中使用詮釋Convert.ToInt32
int i = Convert.ToInt32(aTestRecord.aMecProp);
aTestRecord.aMecProp
是string
。我正在運行的測試中,它的值爲1.15
,在string
。
但上面的代碼會拋出錯誤,指出輸入字符串不是格式!
我不明白爲什麼?
我使用VS 2008的C#
我在C#一個簡單的代碼轉換爲字符串轉換成int在C#中使用詮釋Convert.ToInt32
int i = Convert.ToInt32(aTestRecord.aMecProp);
aTestRecord.aMecProp
是string
。我正在運行的測試中,它的值爲1.15
,在string
。
但上面的代碼會拋出錯誤,指出輸入字符串不是格式!
我不明白爲什麼?
我使用VS 2008的C#
如果你想驗證一個字符串是一個整數,使用的TryParse()
int i;
if (int.TryParse(aTestRecord.aMecProp, out i))
{
}
i
將得到分配,如果的TryParse()成功
試試這個:
double i = Convert.ToDouble(aTestRecord.aMecProp);
或者,如果你想要的整數部分:
int i = (int) Convert.Double(aTestRecord.aMecProp);
一個整數只能表示沒有小數部分的字符串。 1.15包含0.15的小數部分。 你必須把它轉換成浮動保持小數部分,正確分析:
float f = Convert.ToSingle(aTestRecord.aMecProp);
那是因爲1.xx
不是整數有效值。你可以轉換爲Int32
,樣品前截斷:
int result = (int)(Math.Truncate(double.Parse(aTestRecord.aMecProp)* value)/100);
可以轉換爲加倍,然後強制轉換它
string str = "1.15";
int val = (int)Convert.ToDouble(str);
剛剛嘗試這一點,
Int32 result =0;
Int32.TryParse(aTestRecord.aMecProp, out result);
你需要一個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
也許轉換第一個翻番,然後爲int的時刻 –
那麼什麼是整數,不能測試它?這是一個*整數*。你有沒有看過C#的數據類型? – Arran
字符串值1.15實際上不是一個整數。這是浮動價值。 – SKJ