对于第一象限,满足(x-2)^2 + (y-2)^2 <= 1^2落在圆上和园内。 可以写出其C语言的逻辑表达式 ?

对于第一象限,满足(x-2)^2 + (y-2)^2 <= 1^2落在圆上和园内。
可以写出其C语言的逻辑表达式 fabs(pow(x-2,2)+pow(y-2,2)-1)<=1e-8
书上这样写有三个地方不明白,一,为什么要把1移到左边,右边用一个很小的数代替,直接<=1不可以吗?
二,为什么左边要加绝对值呢?不加不可以吗
三,为什么要用pow函数,这样明显速度会慢一些,两次方为何不直接相乘?

第1个回答  推荐于2016-11-14

    计算机浮点数是有一定的精度范围的,这样导致0或1在计算当中不能保证一定是0或1,也就是说0可能取到0.0000001,1可能是0.9999999这样的浮点数,所以右边用一个很小的数代替,也就是说如果我们得到的结果比这个数还小,那么我们就认为这个数等于小于9。

    跟1同理,0可能是-0.0000001这样的情况,所以要加绝对值。

    pow的速度可能慢也可能快,这取决于你的编译器。好的编译器也许会快点,但是其实这是一个很简答的乘方操作,速度本来差别也不会很大。

本回答被提问者采纳
第2个回答  2014-12-19
计算机会有误差的,对于 小数,不能直接比较,而是比较差距 。差距有负数,所以取绝对值,至于 pow,只是习惯

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网