首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何避免将7/8*pi =0隐式转换为int的陷阱

如何避免将7/8*pi =0隐式转换为int的陷阱
EN

Stack Overflow用户
提问于 2015-03-13 15:57:32
回答 2查看 367关注 0票数 0

很多次,我都在写一些东西,比如双t= 7/8*pi,然后才发现t等于0。为什么?因为到int的隐式转换。可以通过重新排列数字double t= 7*pi/8来获得正确的结果。现在,提名者是double,不会发生转换。(或双t= 7d/8*pi或7f或7.0或...)

问题是,犯错是很直接的!

我怎样才能防止它呢?把隐式转换完全转换成int有意义吗?我该怎么做?

EN

回答 2

Stack Overflow用户

发布于 2015-03-13 16:12:06

这不是一个优先级的问题吗?我所做的是使用7.0和/或8.0,因为我知道我想避免整数运算。一旦你习惯了,这似乎是很自然的。

票数 1
EN

Stack Overflow用户

发布于 2015-03-13 16:22:33

在Java语言中,可能会对此类构造发出警告。

ICAST:整数除法结果转换为双精度或浮点型(ICAST_IDIV_CAST_TO_DOUBLE)

这段代码将整数除法(例如,整型或长整型)运算的结果转换为双精度或浮点型。对整数进行除法会将结果截断为最接近零的整数值。结果被强制转换为double这一事实表明,应该保留这种精度。可能的意思是在执行除法之前将一个或两个操作数转换为双精度。下面是一个示例:

int x= 2;int y= 5;//错误:产生结果0.0 double value1 =x/ y;//正确:产生结果0.4 double value2 =x/ (double) y;

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

https://stackoverflow.com/questions/29027309

复制
相关文章

相似问题

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