关于浮点数赋值的一个问题

guzl86 2010-09-29 10:16:05
今天公司开代码批判大会,我的一个代码被提出了如下的问题:

#define DNUM 1.654321
double i = DNUM;//有人提出这里的赋值是不正确的。但是我觉得没有什么问题。

请大家帮忙分析一下,提出问题者建议在赋值时将DNUM强制转化为double类型的,是否有道理?
谢谢各位同仁。
...全文
300 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyfwx 2010-09-30
  • 打赏
  • 举报
回复
const double DNUM = 1.654321;
xiaobao601 2010-09-30
  • 打赏
  • 举报
回复
如楼上所说,确实仅仅是替换而已,没问题
canshui 2010-09-30
  • 打赏
  • 举报
回复
#define DNUM 1.654321
double i = DNUM;//有人提出这里的赋值是不正确的。但是我觉得没有什么问题。

什么叫宏呢!
宏只是做的是替换工作而已,出现 DNUM 的地方就用 这个东西(1.654321) 代替

类型由double确定,不就是挺显式吗,不感觉又有什么问题
senlinzhiwang 2010-09-30
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 linxren 的回复:]
double i = DNUM;
会转换成double型的,就算你写double i=1; i也是double型的,而且值也是正确的。
[/Quote]
说得有道理。
linxren 2010-09-30
  • 打赏
  • 举报
回复
double i = DNUM;
会转换成double型的,就算你写double i=1; i也是double型的,而且值也是正确的。
adamchao 2010-09-30
  • 打赏
  • 举报
回复
这样赋值是没有问题,但从代码的规范来说用5楼的方法比较好.因为不会产生很多个1.654321常量.
keanoz 2010-09-30
  • 打赏
  • 举报
回复
没必要转换吧,#define只是定义一个可替换的标识符,又不定义它的类型。
shenchenman 2010-09-29
  • 打赏
  • 举报
回复
在公司里,代码要求尽量清晰,明确,尽量不要做隐式转换,不要滥用void做参数类型,不要用i,j之类的做变量名。
xiaoyuer5222 2010-09-29
  • 打赏
  • 举报
回复
没有什么问题,只是加上(double)DNUM后,将系统内部进行的隐式转化显式化了
saishow 2010-09-29
  • 打赏
  • 举报
回复
没什么问题啊。。。
bluejays 2010-09-29
  • 打赏
  • 举报
回复
我觉得不必转换。
不过i一般用于整数的,定义成浮点可能会让很多人上当。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧