C语言 y=sin(x*pi/180) z=sin(x/180*pi)什么区别

先进行除法会自动取整?C语言什么情况自动取整

有区别:这里假定pi是double型的变量
1)x为整型时,y=sin(x*pi/180);会先计算x*pi得到double型数据(因为pi的类型),然后再做除法
z=sin(x/180*pi);会先计算x/180得到整型数据(因为分子、分母均整型)小数部分被
截断了然后再与pi相乘得到double类型结果
应当写做:z=sin((double)x/180*pi);或z=sin(x/180.0*pi);
只要分子、分母中有一个数据类型是double的会使编译程序调用double类型的
运算步骤。

2)x是double型但取值很大时
y=sin(x*pi/180);会先计算x*pi,如果x的值大得x*pi会超出double类型表示范围时就会出问题
y=sin(x/180*pi);会先计算除法,这样先缩小得数再做乘法保证结果不会溢出
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-25
看x的类型,如果x是整型的话是有区别的,(x*pi/180)的结果是合乎意图的数,
而(x/180*pi)会先进行(x/180),会取整,然后再*pi.得到的数不是想要的.
所以有乘除的情况下,一般是先乘再除,乘不会丢失精度,除法可能会丢失精度本回答被网友采纳
第2个回答  2014-03-25
如果X定义的是整型数据,则会取整;如果X定义的是浮点型数据,则不会;

第3个回答  2014-03-25
我觉得没区别呀,c语言中除数和被除数都是整型时会自动取整。