当前位置:C++技术网 > 精选软件 > C++ Primer Plus 6th 3.6 复习题 第9题 浮点数相加转整数

C++ Primer Plus 6th 3.6 复习题 第9题 浮点数相加转整数

更新时间:2019-02-18 09:49:51浏览次数:1+次

C++ Primer Plus复习题3.6 第九题   浮点数相加转整数

题目:
9. 假设x1和x2是两个double变量,您要将它们作为整数相加,再将结果赋给一个整型变量。请编写一条完成这项任务的C++语句。如果要将它们作为double值相加并转换为int呢?

答案:
下面的代码都可用于完成第一项任务:
int pos = (int)x1 + (int)x2;
int pos = int(x1) + int(x2);
要将它们作为double类型相加,再进行转换,可采取下述方式之一:
int pos = (int)(x1 + x2);
int pos = int(x1 + x2);

C++技术网辅导详解解答:
    此题融合类型转换和数值相加的运算。将double作为整数相加,意味着要先将double转为int,然后再相加。
    需要注意的是,先转为int再相加得到整数和先用double相加后再转为整数,结果可能会不一样哦。因为double转换为int会丢失精度,然后再相加,则实在丢失精度的基础上做的运算。而先用double相加,然后再转换为int,则在运算过程中保留了精度,降低了精度丢失,最后再做一个类型转换,还是会产生数据精度丢失。比如,1.000005 + 1.999999 ,先转换得到的是1+1=2,而先用double相加则是3.000004,再转换为int则最终结果是3。