我想避免除以零,所以我有一个if语句:
float number;
//........
if (number > 0.000000000000001)
number = 1/number;我可以安全地使用多小的值来代替0.000000000000001
发布于 2013-08-14 14:33:59
if条件中的数字取决于您想要对结果做什么。在IEEE 754中,使用的是(几乎?)所有C实现除以0是可以的:得到正无穷大或负无穷大。
如果您的目标是避免+/-无限,那么if条件中的数字将取决于分子。当分子为1时,您可以使用DBL_MIN或来自math.h的FLT_MIN。
如果您的目标是在除后避免大量的数字,那么您可以进行除法,然后检查除后fabs(number)是否大于某个值,然后根据需要采取任何行动。
你的问题没有一个正确的答案。
发布于 2013-08-14 14:22:34
只需使用:
if(number > 0)
number = 1/number;注意>和>=之间的区别。如果是number > 0,那么肯定不是0。
如果数字可以是负数,也可以使用:
if(number != 0)
number = 1/number;注意,正如其他人在注释中提到的那样,检查number不是0并不会阻止您的结果成为Inf或-Inf。
发布于 2013-08-14 14:25:01
您可以简单地检查:
if (number > 0) 我不明白你为什么需要下限。
https://stackoverflow.com/questions/18234311
复制相似问题