在 C++ 中使用 D 和 E 表示法有啥区别?
Posted
技术标签:
【中文标题】在 C++ 中使用 D 和 E 表示法有啥区别?【英文标题】:What is the difference between D and E notations when used in C++?在 C++ 中使用 D 和 E 表示法有什么区别? 【发布时间】: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 的 strtod
accepts this notation 实现......)
【参考方案1】:
C++ 中没有 D 表示法。在您的示例中,在字符 'D'
处,不会进一步解析该数字。因此,您的两种情况都会导致 123。E 表示法照常工作。
D 符号来自 Fortran,它表示 DOUBLE PRECISION 常数。由于 Fortran 通常用于数学,因此 octave 支持这种表示法。
【讨论】:
以上是关于在 C++ 中使用 D 和 E 表示法有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
C++ Mfc中 format(%d,str)和format(%f,str)有啥区别?
C++中SetWindowTextW, SetWindowTextA SetWindowText三者有啥区别?
请问C++中啥是函数的定义性声明和函数的引用性声明,有啥区别