c++数据类型精度问题

请问数据类型不同,相同的算式为什么会得到不一样的结果,具体原因是什么?

img

4.26在表达式里不等于4.26,而是4.2599...。
虽然两个表达式结果相同(2129.9999999999995),但是赋值给int时会直接截断小数点部分(2129)。
然后cout<<double类型时,有效位6位,多了会四舍五入(2130.000000)。

因为浮点数计算有误差,当把一个浮点数存储为整型时,只整数部分提取转化为整型,相当于向零取整。而当浮点数输出时,输出结果会四舍五入。