【发布时间】:2012-02-24 22:04:06
【问题描述】:
我正在阅读几个整数,它们代表年、儒略日、小时和分钟。我正在尝试将它们转换为小数天数。
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。
我将所有整数转换为浮点数。为什么它们保持为整数?
edit 是的,我用 cout 显示输出。 setprecision 解决了这个问题,谢谢。
【问题讨论】:
-
你如何查看最终值;调试器,
printf()? -
如何打印结果?问题可能出在您的打印语句中
-
根据my test,
printf显示了预期的结果,但cout显示了“错误”的值。 -
请注意,尽管使用浮点数进行算术运算存在危险,但它们并不精确。
-
我正在尝试转换为序列号,就像在 Matlab 的 datenum 函数中一样,所以我可以轻松地比较时间序列,并填写缺失的分钟和秒。有一个更好的方法吗?双精度比浮点数更精确吗?
标签: c++ floating-point