繁体   English   中英

c和java的算术表达式和括号

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM