首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"long“型C++计算

问"long“型C++计算
EN

Stack Overflow用户
提问于 2013-01-22 16:41:23
回答 2查看 188关注 0票数 0

我有一个内联函数,做频率到周期的转换。计算精度必须使用long,而不是double类型。否则,可能会导致一些舍入错误。然后,函数将结果转换为double。我想知道在下面的代码中,哪一行将保持long类型的计算。无论参数条是100、100.0还是33.3333。

代码语言:javascript
复制
double foo(long bar)
{
  return 1000000/bar;
  return 1000000.0/bar;
  return (long)1000000/bar;
  return (long)1000000.0/bar;
}

我自己试过了,第四行很管用。但只是想知道在这种情况下类型转换的概念。

编辑:

其中一个错误是1000000/37038 = 26,而不是26.9993。

EN

回答 2

Stack Overflow用户

发布于 2013-01-22 16:45:17

代码语言:javascript
复制
return 1000000/bar;

这将把数学做得很长。

代码语言:javascript
复制
return 1000000.0/bar;

这将把数学算作双倍。

代码语言:javascript
复制
return (long)1000000.0/bar;

这相当于第一个

票数 2
EN

Stack Overflow用户

发布于 2013-01-22 16:46:17

第一行(第三行更详细地)将计算long ( C++中的whihc总是截断任何结果),然后将整值作为双倍返回。我不明白您在关于bar是33.3333的问题中说了什么,因为这不是一个可能的long值。

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

https://stackoverflow.com/questions/14463572

复制
相关文章

相似问题

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