比如我现在是
double MyRate(double m)
{
double mr = 0.0;
if(m==1.0)
{
mr = 0.9144*0.9144;
}
return mr;
}
这里函数编译后是mr = 0.9144*0.9144;还是直接mr = 常数(即0.9144*0.9144的结果);?大侠们,知道的指点一二。
double MyRate(double m)
{
double mr = 0.0;
if(m==1.0)
{
mr = 0.9144*0.9144;
}
return mr;
}
这里函数编译后是mr = 0.9144*0.9144;还是直接mr = 常数(即0.9144*0.9144的结果);?大侠们,知道的指点一二。
可以用reflector,也可以用ildasm来查看。
{
double mr = 0.0;
if(m==1.0)
{
mr = CONSTNUM; //常量只能引用,不能改变它的大小
}
return mr;
}
double b = a *3.0;
调试的结果肯定是b位1.0,如果a只是存近似值的话,b的值等于a的值乘以3不会是1.0,所以,4楼说只能是近似值我不同意,我觉得是一种机制能表示无线循环小数。
这些问题没有什么同意不同意的,你可以很容易验证:用ildasm可以反编译看到编译后产生的结果。至于验证浮点误差的存在,给你个程序:
double a = 2.0;
double b = 0.003;
double c = a - b;
double d = a - c;
Console.WriteLine(d);不要用学习人文的方法学习自然科学,计算机作为客观存在的事物不是说你同意就如何,你不同意就如何。如同我不同意万有引力,我就能飞起来么?提出问题是好的,但是漫无目的的空想还不如打好基础。这些基本概念并不需要你去猜测探索,书上都有(而且书上都告诉你怎么去求证)。