【发布时间】:2019-02-15 17:51:13
【问题描述】:
在给定的链接中:Reading scientific notation D+ 据说D和E(或e)是相似的。但是,当我在 C++ 中运行以下代码时:
long double x;
cin >> x;
printf("%.30Lf",x);
输入123D+01,输出为123.000000000000000000000000000000,当我输入123D-01时,输出仍为123.000000000000000000000000000000。但是,对于输入为123E+01,输出为1230.000000000000000000000000000000,对于输入123E-01,输出为12.300000000000000000173472347598。
在八度音程中,>> str2num("123D+01") 给出输出 ans = 1230
而对于>> str2num("123D-01"),输出为ans = 12.300。
请解释一下!
【问题讨论】:
-
我很确定 C++ 不会将
D识别为科学记数法,而且您每次只能读取 123。如果您接下来尝试阅读char,它将是D。 -
@MihirKarkare 在 Matlab/Octave 中,它们似乎是等价的。在该语言之外,“d”符号几乎不存在。
-
也许
D代表Declination?您需要研究数据源的文档以了解数据的真正含义,您不能只是猜测。 -
@MihirKarkare 如果数据是由 FORTRAN 程序生成的,则表示double precision
-
(如果你不关心可移植性,它看起来像 MSVC 的
strtodaccepts this notation 实现......)