在 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++中啥是函数的定义性声明和函数的引用性声明,有啥区别

在 C++ 中,数组分配的 new 和 new[] 有啥区别

C语言中int和float有啥区别啊

硬盘HD0与HD1有啥区别