把 float 强制转换为 int 时, 会舍去小数点后面的值, 例如 0.1 转为 int 后即为 0, 将 0.1 乘上 10 以后再转为 int 结果是 1, 如果把 0.01 先乘上 100 后再转为 int 结果却为 0, 有这种现象的还不只有 0.01, 不信可以运行下面的代码
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
float one = 1;
for (int i = 10; i <= Math.Pow(10, 9); i = i * 10)
{
float a = one / i;
int b = (int)(a * i);
Console.WriteLine(i.ToString() + "::" + b.ToString());
Console.WriteLine();
}
Console.Read();
}
}
}
运行结果如下图所示:
写出来是希望给大家提个醒, 另外还望哪位高手解释一下这其中的道理.