问题标签 [numeric-limits]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1010 浏览

c++ - 编译器无法识别自定义 numeric_limits 成员函数

我正在使用一个数据结构,它希望使用 STLlimits来确定我给它的结构的最小值、最大值和无穷大(我认为只有这些)值。我正在使用 Visual C++ 2010,如果有这些东西的具体实现细节。

这是我的数据类型的基本结构,PseudoTuple::ReturnWrapper是需要限制支持的类型:

借助复制和粘贴的强大功能,我numeric_limits为它创建了一个小类,只实现了我认为需要的 3 个功能。返回值当前是临时的,只是为了看看这是否会编译。

我在此之后包含标题以确保它可以获取这些声明。我在这里遇到错误:

coordinate_type是一个 typedef PseudoTuple::ReturnWrapper。这是错误:

min并且在and的所有用法上也收到了这个有趣的警告,这个警告max与错误在同一行:

当我将此数据结构与std::arrayof一起使用时std::string,我仍然会收到这些警告,但不会弹出编译器错误。在这种情况下它也可以正常运行,所以整个事情必须以某种方式工作。max但是在使用我的 custom 时它无法识别该功能numeric_limits

如果我将 更改max()infinity(),它可以正常编译并继续在min(). 这些名字给它一些悲伤minmax但我不知道为什么。不过,这确实告诉我它可以infinity从我的实现中获取方法numeric_limits

编辑:删除了显示正确类型的数据结构代码正在传入,似乎无关紧要。

编辑 2:Mark B 解决了问题,但弹出了一个新问题:

error LNK2019: unresolved external symbol "__declspec(dllimport) public: static struct PseudoTuple::ReturnWrapper __cdecl std::numeric_limits<struct PseudoTuple::ReturnWrapper>::max(void)" (__imp_?max@?$numeric_limits@UReturnWrapper@PseudoTuple@@@std@@SA?AUReturnWrapper@PseudoTuple@@XZ) referenced in function "public: static struct PseudoTuple::ReturnWrapper const __cdecl kd_v1_0_8::spatial::detail::coordinate_limits_impl<struct PseudoTuple::ReturnWrapper,1,0>::highest(void)" (?highest@?$coordinate_limits_impl@UReturnWrapper@PseudoTuple@@$00$0A@@detail@spatial@kd_v1_0_8@@SA?BUReturnWrapper@PseudoTuple@@XZ)

所以有些东西弄乱了链接......得到相同的min但不是infinity.

0 投票
1 回答
214 浏览

api - 我在哪里可以找到 OpenStreetMap API 0.6 的数字限制?

我正在尝试使用 OpenStreetMap API 0.6。API 是直截了当的,但我无法从他们的文档中找到任何数字范围限制信息。

我能找到的关于数字范围限制的唯一提及是here。

  1. 元素 ID 为非负数,http://wiki.openstreetmap.org/wiki/OSM_XML
  2. ID 是整数,http://wiki.openstreetmap.org/wiki/Data_Primitives

因为我的代码是针对移动平台的,所以我想针对内存空间优化我的代码。现在我在很多情况下都使用 64 位整数(实际上这也只是一个假设),这在考虑数据量时并不好。

我在哪里可以找到数字限制?

0 投票
1 回答
289 浏览

c++ - 浮点/双精度的小范围随机数,适用于整数类型(C++,VS2010)

我正在尝试使用 VS2010 中的模板来创建基于类型的随机数。我正在使用下面的代码:

char不幸的是,为/ int/等(整数类型)创建 BaseTypeRandomizer 的对象会long返回覆盖整个范围的数字,但对于浮点数和双精度数则不会。浮点数都在1e+37to之间9e+38,双打在1e+307to之间2e+308(或者至少都在那个附近)。检查distVS 调试器中的对象显示限制是正确的,但Values向量填充的数字范围要小得多。

有谁知道为什么限制不能正常工作?

0 投票
6 回答
1701 浏览

c++ - std::numeric_limits::is_exact ...什么是可用的定义?

正如我所解释的,MSDN 的定义几乎numeric_limits::is_exact总是错误的:

在 [this] 类型上完成的 [all] 计算没有舍入误差。

而且IBM的定义几乎总是正确的:(或者循环定义,取决于你怎么读)

一种对其所有值都有精确表示的类型

我可以肯定的是,我可以将 a 存储2在 adouble和 a中long,并且它们都将被精确地表示。

然后我可以将它们除以并且两者都不能准确地10保持数学结果。

给定任何数字数据类型T,正确的定义方法是std::numeric_limits<T>::is_exact什么?

编辑:我已经从许多答案中提供的详细信息中发布了我认为对该问题 的准确答案。这个答案不是赏金的竞争者

0 投票
1 回答
840 浏览

c++ - std::is_signed 之间的区别和 std::numeric_limits::is_signed?

两者std::is_signed<T>std::numeric_limits<T>::is_signed都应该给出关于 的签名的答案T
为什么现在有两个符号指示符(即从 C++11 开始)?

0 投票
1 回答
5094 浏览

floating-point - 双精度浮点格式的最大和最小指数

根据IEEE Std 754-2008标准,binary64 双精度浮点格式的指数字段宽度为 11 位,通过 1023 的指数偏差进行补偿。标准还规定最大指数为 1023,并且最小值为 -1022。为什么最大指数不是:

并且最小指数不是:

0 投票
2 回答
1919 浏览

c++ - c++中整数类型的正无穷和负无穷

我正在阅读 C++ 中的正无穷和负无穷。

我读到整数类型没有无限值,即。std::numeric_limits<int>::infinity();不会工作,但std::numeric_limits<int>::max();会工作,并将表示可以由整数类型表示的最大可能值。

所以std::numeric_limits<int>::max();整数类型的 可以作为它的positive infinite limit?

还是整数类型只有max valueinfinity value不是真的?

0 投票
1 回答
172 浏览

c++ - int min 的定点实现

我正在阅读 C++ 中的正无穷和负无穷,我正在尝试在定点数学算法实现中实现它们

我可以看到 int 的最大值将等于std::numeric_limits<int>::max(); c++

int 的最小值std::numeric_limits<int>::min(); 在 C++中将等于

在这里,当我在定点数学实现中手动定义 int max 和 int min 时,我的疑问是 int min = -int max;int min = -int max -1;

有人可以清除吗?

0 投票
2 回答
594 浏览

c++ - 为什么 C++ 不将 INT_MIN 定义为 (1<<31)

我理解 C++ 将 INT_MIN 定义为 (-2147483647 - 1) 的原因,但他们为什么不只使用 1<<31 呢?这可以防止溢出并且也易于理解。

0 投票
2 回答
14070 浏览

c++ - Why does numeric_limits::min return a negative value for int but positive values for float/double?

Why does numeric_limits::min return a negative value for int, but positive values for e.g. float and double?

Output:

From cppreference:

Returns the minimum finite value representable by the numeric type T.

For floating-point types with denormalization, min returns the minimum positive normalized value. Note that this behavior may be unexpected, especially when compared to the behavior of min for integral types. To find the value that has no values less than it, use numeric_limits::lowest.

min is only meaningful for bounded types and for unbounded unsigned types, that is, types that represent an infinite set of negative values have no meaningful minimum.