【发布时间】:2019-01-06 11:54:32
【问题描述】:
也许标题不是它应该的,或者它可能是重复的,但无论哪种方式,我都被卡住了,无法在这里或其他任何地方找到正确的答案。
我习惯了php,最近开始学习c++。
我需要转换一个通过朱利安日期/时间循环的 php 循环。在 php 中这很容易。
在 php 中,我只需创建一个带有 julian 日期/时间的变量,然后开始循环使用十进制数。一个例子:
<?php
$jd = 2445874.74375;
for($x=0; $x<=300; $x++) {
echo "new jd = ". $jd;
$jd = $jd + 0.5; // half a day
}
?>
然后导致以下数字序列
jd = 2445874.74375
jd = 2445875.24375
jd = 2445875.74375
jd = 2445876.24375
jd = 2445876.74375
jd = 2445877.24375
jd = 2445877.74375
jd = 2445878.24375
jd = 2445878.74375
我是 C++ 新手,所以我只是尝试复制相同的内容,但更改了语法,以便在 C++ 中编译和运行。
int main() {
double jd = 2445874.74375; // I figured i need a double here?
for(int i = 0; i <= 300; i+=1) {
cout << jd << endl;
jd = jd + 0.5;
}
}
但是当我运行代码时,结果显示的总数与我预期的不同。根据我的理解和阅读,数字并没有真正改变,但格式不同......输出看起来像这样 ->
2.44587e+06
2.44588e+06
2.44588e+06
2.44588e+06
2.44588e+06
...
2.44589e+06
但我需要一个和原来一样的号码。那么我错过了什么,我不明白什么,最重要的是如何恢复数字格式,如我插入双精度的原始朱利安日期/时间数字?我需要像 2445874.74375 这样的 jd 以原始格式出现,以使另一个功能工作。那么我怎样才能使这个循环工作, 喜欢它在 php 中的工作?我已经注意到在 C++ 中定义变量的正确方式似乎非常重要,而在 php 中它似乎不太重要。但无论哪种方式,我都不明白。我读过关于整数、浮点数、双精度数、字符和字符串等的文章。但是我研究得越多,它对我来说就越复杂......
【问题讨论】:
-
我建议你从this curated list 那里得到几本书来阅读,总体上了解更多关于C++ I/O manipulators 的信息。
-
那是伟大的情报!