使用浮点时出现意外结果[英] Unexpected results while working with floats

问题描述

我在 C++ 中运行了以下简单代码,得到了意想不到的结果:

浮动 f = 139.4;
cout <
输出:
139.399994;

如果(f == 139.4)
cout <<"预期结果";
其他
cout <<"意外的结果";

输出:
出乎意料的结果
我在 VB 中运行了以下等效代码,但得到了正确的结果.

暗淡为单身
f = 139.4

打印
如果 f = 139.4 那么
打印"预期结果"
其他
打印"意外结果"
结束如果
这在 C++ 的简历上看起来不是很糟糕吗?

推荐答案

2008 年 5 月 12 日星期一 08:09:47 -0700,bintom写道:
我在 C++ 中运行了以下简单代码,得到了意想不到的结果:

浮动 f = 139.4;
cout <
输出:
139.399994;

如果(f == 139.4)
cout <<"预期结果";
其他
cout <<"意外的结果";

输出:
意想不到的结果
[...]
这在 C++ 的简历上看起来不是很糟糕吗?
不,*你的*简历看起来很糟糕;-)

http://www.parashift.com/c++-faq-lit...html#faq-29.16

--
Lionel B

5 月 12 日晚上 8:23*pm,Lionel B <m...@privacy.net 写道:
2008 年 5 月 12 日星期一 08:09:47 -0700,bintom 写道:
我在 C++ 中运行了以下简单代码并得到了意想不到的结果:
浮动 f = 139.4;
cout <
输出:
139.399994;
如果(f == 139.4)
* cout <<"预期结果";
其他
* cout <<"意外的结果";
输出:
意想不到的结果

[...]
这在 C++ 的简历上看起来不是很糟糕吗?

不,*你的*简历看起来很糟糕;-)

http://www.parashift.com/c++-faq-lit...html#faq-29.16

--
Lionel B- 隐藏引用的文字 -

- 显示引用的文字 -
感谢莱昂内尔将我引导至链接,但我的问题仍然存在
没有回答.它是否应该像上面所说的那样是一个计算机科学问题
网站,VB 应该产生类似(不准确)的结果.我只是
试图捍卫我的简历.

2008 年 5 月 12 日星期一 08:59:36 -0700,bintom 写道:
5 月 12 日,8:23?*pm,Lionel B <m...@privacy.net 写道:
>2008 年 5 月 12 日星期一 08:09:47 -0700,bintom 写道:
我在 C++ 中运行了以下简单代码并得到了意想不到的结果:
浮动 f = 139.4;
cout <
输出:
139.399994;
如果(f == 139.4)
?* cout <<"预期结果";
其他
?* cout <<"意外的结果";
输出:
意想不到的结果

[...]
这在 C++ 的简历上看起来不是很糟糕吗?

不,*你的*简历看起来很糟糕;-)

http://www.parashift.com/c++-faq-lit...html#faq-29.16

感谢莱昂内尔将我引导至链接,但我的问题仍然存在
没有回答.它是否应该像上面所说的那样是一个计算机科学问题
网站,VB 应该产生类似(不准确)的结果.我只是
试图捍卫我的简历.
碰巧的是,在我的系统上,您的 C++ 代码会生成"正确"的代码.结果.
但这无关紧要 - 正如常见问题解答所说:浮点是一个
近似.这是不可避免的.如果你有兴趣追求
进一步的问题,看看经典文章:"What Every Computer
科学家应该了解浮点运算"

http://docs.sun.com/source/806-3568/ncg_goldberg.html

--
莱昂内尔 B

本文地址:https://www.itbaoku.cn/post/1050851.html