[英]c and java arithmetic expression and parenthesis
谁能帮助我了解这2个表达式的翻译方式:
第一
double val = 1/(b-1)/t*log(x1/x2);
我在很多地方用c破坏了它,但是有2种不同的结果:
double val2 = ( 1/(b-1) ) / ( t*log(x1/x2) );
double b,t,x1,x2;
b= 0.1;
t= 0.2;
x1 = 0.3;
x2=0.4;
double val = 1/(b-1)/t*log(x1/x2);
printf ("%1.4e",val);
double val2 = ( 1/(b-1) ) / ( t*log(x1/x2) );
printf ("%1.4e",val2);
if(val!=val2){
printf("different!");
}else printf("its ok");
return 0;
第二个问题:对于非常低的阶数,c和java中double的精度是否有很多差异?
谢谢。
乘法和除法是从左到右完成的,因此等于:
((1 / (b - 1)) / t ) * log(x1/x2);
这与您的val2不同,因为日志位于“分界线上方”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.