我想知道除法后是整数还是浮点数。
if (5.4 / 0.8 ==integer) // except something that would evaluate as true in this case
{
}
答案 0 :(得分:3)
一种方法是使用Mathf.Round
查找最接近结果的整数,并使用Mathf.Approximately
将整数与结果进行比较:
float f1 = 0.5;
float f2 = 0.1;
float result = f1/f2;
if (Mathf.Approximately(result, Mathf.Round(result)) {
Debug.Log("integer result");
}
答案 1 :(得分:3)
浮点数计算存在精度问题。
例如,0.3 / 0.1
等于2.9999999999999996,而不是3。
为了进行比较,您需要将它们四舍五入并检查差异是否可以接受。
var result = 0.3 / 0.1;
if (Math.Abs(Math.Round(result) - result) < 0.0000001)
{
// Do something
}
答案 2 :(得分:1)
使用Math
库的其他示例当然更好,但是另一种方法是在除法之前将值转换为decimal
(让转换处理舍入) ),然后确保将结果除以1
时没有余数:
private static bool DivisionIsInteger(double numerator, double denominator)
{
return (decimal) numerator / (decimal) denominator % 1 == 0;
}
从@elgonzo到 ouch 的评论开始倒计时...现在
答案 3 :(得分:-2)
尝试一下:
var div = 5.4 / 0.8;
var divRound = Math.Round(div);
if (div == divRound)
{
Console.WriteLine("Is integer");
}
else
{
Console.WriteLine("Is Float");
}
答案 4 :(得分:-4)
我认为最快的方法是:
var a = 5.4;
var b = 0.8;
var result = a / b;
var isInteger = result % 1 == 0;
if (isInteger)
{
....
}
希望这会有所帮助