PikNik
2021-11-09T15:39:33+00:00
#define pi 4.0*atan(1.0)
#define pi 3.14159
两个方式定义出来的pi,在Cout输出的时候是同一个数,但是用3.14159/pi算出来,前一个结果是0.61,后一个是1,这是为啥呢
计算顺序的问题
3.14159/pi -> 3.14159/4.0*atan(1.0) -> \frac{3.14159*atan(1.0)}{4.0}
第一个应该是变成3.14159/4.0*atan(1),加个括号才对
因为前一个的本质是3.1415926/4*atan(1.0),先除后乘
[quote][pid=566838330,29482260,1]Reply[/pid] Post by [uid=60070386]cheng.S[/uid] (2021-11-17 23:48):
定义宏为什么不加括号呢?[/quote]呃呃 看了楼上我才知道原来是这么个计算顺序
[quote][pid=566838595,29482260,1]Reply[/pid] Post by [uid=62806664]BIGBAOBAOBAO[/uid] (2021-11-17 23:49):
别用define,每次都要算一遍,atan很慢的[/quote]那怎么能快点改保持精度
都define了 pi要大写[img]http://img.nga.178.com/attachments/mon_201209/14/-47218_5052bc835856c.png[/img]
define是替换
代进去计算顺序可能就跟你想的不一样
[quote][pid=566838922,29482260,1]Reply[/pid] Post by [uid=10390901]Jim28[/uid] (2021-11-17 23:51):
那怎么能快点改保持精度[/quote]手打就好了。