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 结尾时会出错

我怎样才能做到这一点?

谢谢你的帮助

4

3 回答 3

5

Math.Floor是您需要的功能。

它:

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

例子:

var val = Math.Floor(value);

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

int noDecimals = (int)value;
于 2012-05-26T07:43:58.570 回答
0

您不能总是将 a 转换float为 an,int因为其中的大多数值float超出int. 你应该返回一个字符串。

以下将做到这一点。

public string RemoveDecimal(float value)
{
    string TempText = value.ToString("#");
    return TempText;
}
于 2012-05-26T08:29:30.813 回答
-2

只需将浮点数转换为 int 即可满足您的要求。

i = (int)myFloat;

它截断小数位数,即它总是朝着 的方向前进0

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

如果结果超出int. 如果您想实现相同的目标,但结果是浮点数,Math.Truncate这就是您所需要的。

于 2012-05-26T08:13:23.653 回答