【发布时间】:2011-10-14 16:50:02
【问题描述】:
编译器是做什么的?目的是将点之后的数字作为整数。我是这样做的:
float a = 0;
cin >> a;
int b = (a - (int)a)*10;
现在我的问题是:当我输入例如 3.2 时,我得到 2,这就是我想要的。它也适用于 .4、.5 和 .7。但是当我输入例如 2.3 时,我得到 2。对于 2.7,我得到 6,依此类推。但是当我在没有变量的情况下这样做时,例如:
(2.3 - (int)2.3)*10;
我得到了正确的结果。
我不知道编译器做了什么。我一直认为,当我将浮点数转换为整数时,它会简单地切入该点。这就是我使用常量时编译器实际执行的操作。但是,当我使用变量时,编译器会减少其中的一些,但不是全部。
【问题讨论】:
-
浮点数不精确这一事实让您感到厌烦,打印它们将舍入最小的数字,而 (int) 不进行舍入。
标签: c++ types casting floating-point int