汇编代码中的数字非常大,但在 C++ 中无效

extremely huge number in assembly code but invalid in C++

在一段反汇编代码中(大概是visual studio编译的),我发现了这样一段代码:

label:
dt 1.189713341495303E+4932

这是什么意思?为什么有人要使用这样的号码?

boost::lexical_cast<double>("1.189713341495303E+4932") 无法转换此数字。如果超出范围,为什么在汇编中允许?

在大多数系统上,此值接近 float.h 中的 LDBL_MAX - 它是 long double:

的最大值
$ grep LDBL_MAX float.h
#define LDBL_MAX    __LDBL_MAX__

$ gcc -dM -E - < /dev/null | grep __LDBL_MAX__
#define __LDBL_MAX__ 1.18973149535723176502e+4932L