相关疑难解决方法(0)

IEE 754标准C++ 11中的总订单

根据IEEE浮点 wikipage(在IEEE 754上),双精度浮点有一个总顺序(即在具有IEEE-754浮点数的C++ 11实现上,如Linux/x86-64上的gcc 4.8).

当然,operator <on double通常提供一个总订单,但已知NaN是例外(众所周知的民间传说x != x是一种测试方法,如果被x宣布为double x;NaN).

我问的原因是我想要ag std::set<double>(实际上是一组类似JSON的或者类似于Python的值)并且我希望该集合具有一些规范表示(我实际关注的是发出可移植的JSON -same)数据,按照相同的顺序排列,在Linux/x86-64上,例如在Linux/ARM上,甚至在像NaN这样的奇怪情况下.

我找不到任何简单的方法来获得总订单.我编码了

// a totally ordering function, 
// return -1 for less-than, 0 for equal, +1 for greater
int mydoublecompare(double x, double y) { 
   if (x==y) return 0;
   else if (x<y) return -1;
   else if (x>y) return 1;
   int kx = std::fpclassify(x);
   int ky = std::fpclassify(y);
   if (kx == FP_INFINITE) return (x>0)?1:-1; …
Run Code Online (Sandbox Code Playgroud)

ieee-754 c++11

10
推荐指数
1
解决办法
1374
查看次数

标签 统计

c++11 ×1

ieee-754 ×1