我必须将对象转换为int。我的对象值类似于1.34535 我需要的是第一部分是(1)。
我尝试了以下方法:
- Convert.ToInt32(myObj.Value)
,它将数字四舍五入。如果它是1.78
,我得到它(2)这是错误的。我只需要第一部分的整数。
int.TryParse(myObj.Value.toString(), out outValue)
我得到了所有值的0
!
int.Parse(myObj.Value.toString())
会抛出异常,格式不正确。
答案 0 :(得分:1)
首先转换为double
;
var doubleValue = double.Parse(myObj.Value.ToString());
//It could be better to use double.TryParse
int myInt = (int)Math.Floor(doubleValue);
答案 1 :(得分:1)
如果myObj.Value
装箱 double
,那么您必须将两次: unbox 投回{{ 1}}然后为了截断为double
:
int
一般情况下,请尝试int result = (int)((double)(myObj.Value)):
;这个想法是一样的:首先恢复orignal Convert
,然后获取所需的double
:
int
在上面的实施中编辑我已经读取而没有将截断作为截断请求,即小数部分应该是忽略:
int result = (int) (Convert.ToDouble(myObj.Value));
如果预期会有不同的行为,例如
2.4 -> 2
-2.4 -> -2
可以添加 2.4 -> 2
-2.4 -> -3
,例如
Math.Floor
答案 2 :(得分:0)
将您的对象转换为double值,然后使用Use Math.Truncate(number)
答案 3 :(得分:0)
非常简单,不要忘记将其打包在try
和catch
中:
int i = (int)Math.Truncate(double.Parse(myObj.ToString()));
Math.Truncate
只是截断逗号之后的数字:
4.434
变为4
-43.65445
变为-43
答案 4 :(得分:0)
也许,这也是一个解决方案:
var integer = int.Parse(myObject.Value.ToString().Split('.').First());