1. 使用int值计算double结果时(如比例值:期望结果0~1之间),结果异常(实际结果0.0)
static void Main(string[] args)
{
int a = 350;
int MapWidth = 501;
int MapHight = 580;
double Zrate;
Zrate = Convert.ToDouble(a * MapHight / MapWidth);
Console.WriteLine(Zrate);
Console.ReadKey();
}
上述代码可以返回正确结果,关键在于使用显式转换命令Convert.ToDouble()时,a * MapHight / MapWidth的运算顺序要最后才能出现非整数,如果写成(a / MapWidth) * MapHight,或是a / MapWidth* MapHight,都会返回0.0。导致变量结果错误或者程序异常。
2. int类型变量与整数混合运算
static void Main(string[] args)
{
int a = 5;
double Zrate = a /10;
Console.WriteLine(Zrate);
Console.ReadKey();
}
这样写的话,双精度的变量Zrate的结果是0.0(命令行显示是0)。要写成 a /10.0才可以返回正确数值。