在给定的链接中: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
。
请解释!
答案 0 :(得分:0)
C ++中没有D表示法。在您的示例中,在字符'D'
处,该数字不再被解析。因此,两个案例的结果均为123。E标记照常工作。
D表示法来自Fortran,它表示DOUBLE PRECISION常数。而且由于Fortran通常用于数学,所以八度支持这种表示法。