c++ - 为什么当转换为 long int 时,对应于整数的乘法双精度会减一?
问题描述
抱歉标题太长了。这是代码:
int main()
{
float d1 = 1.14;
float d2 = d1 * 100;
long int l = long int(d2);
cout << d1 << ", " << d2 << ", " << l << endl;
}
它输出:
1.14, 114, 113
为什么最后一个值不是 114?这是在 Stroustrup 的 Principle's of Programming 一书(第 9 章,练习 15)中做的一个练习,他告诉你有一个使用美元和美分的接口,但是将值作为 long int 存储在“Money”类中。我测试过,浮动不会发生这种情况,只有双倍。如果将 d2 的值直接设置为 114,也不会发生这种情况。另外请注意,我使用的是 Stroustrup 的头文件“std_lib_facilities.h”——我希望它不是其中的东西。
解决方案
推荐阅读
- python - 如何通过使用 python 给出条件来自动复制文件?
- javascript - 如何使用 React 显示图像上传预览?
- algorithm - 与选择和排名进行最佳匹配的算法
- php - 使用 XMLReader 查找节点并从当前节点和后续子节点检索 XML
- typescript - 打字稿函数重载:无法访问的“this”类型
- javascript - JavaScript 类 构造函数 用作附加到 HTML 文件的变量
- shell - 将扩展名添加到 bluespice docker 映像
- c# - C# IQueryable 在一个组 new 之后连接两个字段
- selenium - 我需要使用工具提示阅读文本,我尝试了很多方法,但我总是得到我找不到那个元素的结果(selenium-java)
- wordpress - 如何选择一个 Wordpress 页面作为自定义帖子类型存档