c语言int加double等于,关于C语言中double和int之间转换的奇怪结果

我的问题:

尝试找出以下C代码段的结果:

#include

int main(int argc, char* argv[])

{

double a = 5.1;

int b = a * 100;

std::cout << b << std::endl;

double c = 6.1;

int d = c * 100;

std::cout << d << std::endl;

}

在Windows上,我使用VS2008 SP1编译并运行了上面的代码,并获得:

509

610

在Linux上,我使用g编译并运行了相同的代码,并得到:

509

609

代码有什么问题?

对不起,我试图为这个问题找到一个标题,所以我可以四处搜寻。但是,我无法命名此问题,因此我在此直接提出。

任何建议都值得赞赏。

这个问题只有十分之一的重复...

我很高兴此链接位于Wiki标签上:docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html

Windows上为509610,Linux上为509609。这最终证明Windows比Linux更好吗?

5.1并非完全是5.1。实际上是5.0999999999999996447286321199499070644378662109375。

这就是为什么结果看起来如此怪异的原因。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部