float变量不存储小数

时间:2017-01-11 14:27:56

标签: c++

我在C ++中使用的代码是:

float y;
y=360/100;
cout<<y;

输出为3。 即使如果我不输出y,而是将其用于左(y)之类的函数,则取值3而不是3.6。但如果我定义y = 360.0 / 100,它就可以正常工作。

顺便说一下,left()是我们CS教授制作的包中的一个函数。左(x)向左改变方向角度x度。基于徽标的包。

2 个答案:

答案 0 :(得分:2)

这是定义语言的方式。您将int除以int,因此执行计算得到int,给出3(截断,而不是舍入)。

然后,您将3存储到float,并提供3.0

如果您希望使用float执行除法,请至少设置一个参数float,例如360f / 100float。这样,在执行除法之前,他们的其他参数将转换为360 / 100f

360.0同样可以正常工作,但我认为尽可能早地说清楚这是一个浮点计算,而不是一个整体计算可能是有意义的;这是人类的考虑,而不是技术考虑。

(请注意double实际上是double,虽然使用它也可以。分割将作为float执行,然后结果转换为{{1对于作业而言。)

答案 1 :(得分:0)

360/100整数算术中计算,然后分配给float

重新加工360f / 100是我最喜欢的解决方法。

最后这些日子float适用于那些不了解现代芯片组如何工作的乳蛋饼,女孩和民众。请改用double类型 - 可能会更快 - 和360.0 / 100