浮点变量不存储十进制
float variable does not store decimal
我在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
。
相关文章:
- 将字符串存储在c++中的稳定内存中
- std::原子加载和存储都需要吗
- C++:将控制台输出存储在宏中更好吗
- visual在c++中将十进制数转换为二进制数
- 使用QProcess执行命令,并将结果存储在QStringList中
- C++十进制到二进制,如何转换
- 访问存储在向量C++中的结构的多态成员
- 如何从存储在std::映射中的std::集中删除元素
- 存储模板类型以强制转换回派生<T>
- 类型总是使用其大小存储在内存中吗
- 当字符串存储在变量中时,如何将字符串转换为wchar_t
- 使用无符号字符数组有效存储内存
- 如何在cpp.中使用协议缓冲区存储大缓冲区/数组(char/int)
- 如何将值从十进制存储为二进制,使其在 C++ 中将值保存在 6 位
- 浮点变量不存储十进制
- 将十六进制存储在 QBytearray 中,提取它并将其转换为十进制
- 十六进制字符到十进制,并将输出存储为字符
- 以双C++存储大的十进制数
- 从文件中读取数字并将其存储为十进制而不是c++中的ASCII
- 使用db2和c++在数据库中存储十进制浮点值(DECFLOAT)