将Object转换为int而不进行舍入

时间:2017-12-18 10:30:14

标签: c# object int

我必须将对象转换为int。我的对象值类似于1.34535 我需要的是第一部分是(1)。

我尝试了以下方法: - Convert.ToInt32(myObj.Value),它将数字四舍五入。如果它是1.78,我得到它(2)这是错误的。我只需要第一部分的整数。

  • int.TryParse(myObj.Value.toString(), out outValue) 我得到了所有值的0

  • int.Parse(myObj.Value.toString())会抛出异常,格式不正确。

5 个答案:

答案 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)

http://msdn.microsoft.com/en-us/library/c2eabd70.aspx

答案 3 :(得分:0)

非常简单,不要忘记将其打包在trycatch中:

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());