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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将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())抛出异常,格式不正确。
答案

如果myObj.Value装箱double然后你必须施放两次:取消装箱回到double然后为了截断到int

int result = (int)((double)(myObj.Value)):

一般情况下,试试qazxsw poi;这个想法是一样的:首先恢复原来的qazxsw poi,然后获得所需的Convert

double

编辑:在上面的实现中,我已经阅读了没有舍入请求的截断,即应忽略小数部分:

int

如果预期有不同的行为,例如

int result = (int) (Convert.ToDouble(myObj.Value));

一个人可以添加 2.4 -> 2 -2.4 -> -2 ,例如

 2.4 ->  2
-2.4 -> -3 
另一答案

首先转换为Math.Floor;

 int result = (int) (Math.Floor(Convert.ToDouble(myObj.Value)));
另一答案

将您的对象转换为double值并使用Use double

var doubleValue = double.Parse(myObj.Value.ToString()); //It could be better to use double.TryParse int myInt = (int)Math.Floor(doubleValue);

另一答案

很简单,别忘了将它包装在Math.Truncate(number)http://msdn.microsoft.com/en-us/library/c2eabd70.aspx中:

try

catch只是截断逗号之后的数字:

int i = (int)Math.Truncate(double.Parse(myObj.ToString())); 成为Math.Truncate

4.434成为4

另一答案

也许,这也是一个解决方案:

-43.65445

以上是关于将Object转换为int而不进行舍入的主要内容,如果未能解决你的问题,请参考以下文章

将数字截断为两位小数而不进行舍入

是否有更直接的方法将float转换为int而不是添加0.5f并使用截断转换?

Powershell:将分数转换为整数 - 令人惊讶的舍入行为

从Int获取单个数字而不使用字符串?

java中怎样将object类型转换成int 型

将双精度转换为字符数组 C++