double.Epsilon vs. std :: numeric_limits <double> :: min()

sth*_*ers 3 .net c++ floating-point

为什么double.Epsilon != std::numeric_limits<double>::min()

在我的PC上: double.Epsilon == 4.9406564584124654E-324并在.NET中定义 std::numeric_limits<double>::min() == 2.2250738585072014e-308

有没有办法从.NET获得2.2250738585072014e-308?

Jon*_*eet 9

它们是不同的,因为double.Epsilon返回最小的可表示值.numeric_limits<double>::min()返回最小的标准化值.

基本上double.Epsilon相当于numeric_limits<double>::denorm_min().

在.NET中获得等效的最简单方法可能是找出最小规范化数字和使用的位模式BitConverter.Int64BitsToDouble.