首页 > 解决方案 > 为什么当转换为 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”——我希望它不是其中的东西。

标签: c++

解决方案


推荐阅读