如何忽略十进制

时间:2012-05-26 07:42:19

标签: c# .net-4.0

我试过这样做 - 将任何浮点值设为int值。我试图实现的目标是2.00-2.99转为2.

注意:我没有尝试做近似(低于2.49变为2,而那些2.50+变为3)。

到目前为止我已经这样做了

public int RemoveDecimal(float value)
{
    string TempText = (string)value;
    TempText.Remove(IndexOf('.'));
    return int.parse(TempText);
}

但是当浮点值以.00

结尾时,这将出错

我怎样才能做到这一点?

感谢您的帮助

3 个答案:

答案 0 :(得分:5)

Math.Floor是您需要的功能。

有:

  

返回小于或等于指定数字的最大整数。

示例:

var val = Math.Floor(value);

或者,您可以简单地转换为整数 - 只要忽略小数部分,只要decimal的范围在int的范围内(否则您将得到一个整数)例外):

int noDecimals = (int)value;

答案 1 :(得分:0)

您无法始终将float转换为int,因为float中的大多数值都超出int的{​​{3}}。你应该返回一个字符串。

以下将做到这一点。

public string RemoveDecimal(float value)
{
    string TempText = value.ToString("#");
    return TempText;
}

答案 2 :(得分:-2)

只需将浮点数转换为int就可以实现所需。

i = (int)myFloat;

它截断小数位数,即它总是朝0方向。

(int)2    ==  2
(int)1.9  ==  1
(int)-1.5 == -1

如果结果超出int的有效范围,这显然无法正常工作。如果你想实现相同的目标,但结果是浮点数,Math.Truncate就是你需要的。