我试过这样做 - 将任何浮点值设为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
结尾时,这将出错我怎样才能做到这一点?
感谢您的帮助
答案 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
就是你需要的。