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。
这就是为什么结果看起来如此怪异的原因。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
