浮点变量不存储十进制

float variable does not store decimal

本文关键字:十进制 存储 浮点变量      更新时间:2023-10-16

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

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

输出为 3。甚至,如果我不输出 y,而是将其用于像 left(y) 这样的函数,则取值 3 而不是 3.6。但是如果我定义 y=360.0/100,它就可以正常工作。

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

这是定义语言的方式。你把一个int除以一个int,所以执行计算得到一个int,给出3(截断,而不是舍入)。

然后你把3储存到一个float里,给3.0

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

360 / 100f同样有效,但我认为尽早明确这是一个浮点计算,而不是一个积分计算可能是有意义的;这是一个人为的考虑,而不是一个技术考虑。

(请注意,360.0实际上是一个double,尽管使用它也可以。除法将作为double执行,然后将结果转换为分配的float)。

360/100

分配给float之前以整数算术计算。

返工360f / 100是我最喜欢的解决此问题的方法。

最后,这些天float是为吃乳蛋饼的人、女孩和不了解现代芯片组如何工作的人准备的。改用double类型(可能会更快)和360.0 / 100