首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >除以零我能得到多近?

除以零我能得到多近?
EN

Stack Overflow用户
提问于 2013-08-14 14:20:02
回答 7查看 1.7K关注 0票数 0

我想避免除以零,所以我有一个if语句:

代码语言:javascript
运行
复制
float number;
//........
if (number > 0.000000000000001) 
  number = 1/number;

我可以安全地使用多小的值来代替0.000000000000001

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-08-14 14:33:59

if条件中的数字取决于您想要对结果做什么。在IEEE 754中,使用的是(几乎?)所有C实现除以0是可以的:得到正无穷大或负无穷大。

如果您的目标是避免+/-无限,那么if条件中的数字将取决于分子。当分子为1时,您可以使用DBL_MIN或来自math.hFLT_MIN

如果您的目标是在除后避免大量的数字,那么您可以进行除法,然后检查除后fabs(number)是否大于某个值,然后根据需要采取任何行动。

你的问题没有一个正确的答案。

票数 6
EN

Stack Overflow用户

发布于 2013-08-14 14:22:34

只需使用:

代码语言:javascript
运行
复制
if(number > 0)
    number = 1/number;

注意>>=之间的区别。如果是number > 0,那么肯定不是0

如果数字可以是负数,也可以使用:

代码语言:javascript
运行
复制
if(number != 0)
    number = 1/number;

注意,正如其他人在注释中提到的那样,检查number不是0并不会阻止您的结果成为Inf-Inf

票数 9
EN

Stack Overflow用户

发布于 2013-08-14 14:25:01

您可以简单地检查:

代码语言:javascript
运行
复制
if (number > 0)  

我不明白你为什么需要下限。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18234311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档