c++ - 为什么我的花车坚持保持整数?

标签 c++ floating-point

我正在读取几个整数,它们代表年、儒略日、小时和分钟。我正在尝试将它们转换为小数天数。

int YYYY, JJJ, HH, MM;

float datenumber = (YYYY*360.0f)+(JJJ*1.0f)+((HH*1.0f)+(MM/60.0f))/24.0f;

使用 2001, 083, 22, 32 的值,我应该得到 724043.939 的结果。相反,我得到了 724044

我将所有整数转换为 float 。为什么它们保持为整数?

编辑 是的,我正在用 cout 显示输出。 setprecision 解决了问题,谢谢。

最佳答案

问题不在于你的数字或你的计算。这只是你展示它的方式。 cout 已确定 6 位数字对您来说足够了。如果您需要更多,请使用 setprecision

std::cout << std::setprecision(10) << datenumber;

demo

关于c++ - 为什么我的花车坚持保持整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9438711/

相关文章:

c++ - 是代码块 10.05。与 QtWorkbench 兼容?

c++ - 复制构造函数错误

c++ - 类型比较

excel - 在 Excel 中 0.2 + 0.1 如何等于 0.3?

c - 我的浮点代码或 gcc 中有错误吗?

c++ - 未调用 QGraphicsItem 绘画

c++ - 使用 memcpy 将 float 组复制到 uint8_t 数组是否有效

c++ - 为什么在浮点文字的末尾添加 0 会改变它的舍入方式(可能是 GCC 错误)?

floating-point - float 和整数....?

c++ - IEEE-754 浮点计算、相等和缩小