首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

unique精度太高,怎么处理

2013-01-08 
unique精度太高,怎么办?unique 是标准库提供的算法algorithms。但对于vectordouble进行unique,显然直接使

unique精度太高,怎么办?
unique 是标准库提供的算法algorithms。但对于vector<double>进行unique,显然直接使用==/!=有失妥当。楼下的给点建议吧。
[解决办法]

这是解决了吗,求人不如求己
[解决办法]
std::unique 有一个重载接受 predicate,自己提供一个带误差限的仿函数就行了。
[解决办法]

[解决办法]
于是接分。。。
[解决办法]
学    习
[解决办法]
猜测楼主问的是精准度的问题?
从Qt抄来的,稍作了一些修改
精准度可以自己做修改
建议改成functor,效率比function pointer高


[解决办法]
template <class ForwardIterator, class BinaryPredicate>
  ForwardIterator unique ( ForwardIterator first, ForwardIterator last,
                           BinaryPredicate pred );
不是可以带个断言么?
传个自定义的比较函数不就好了。

[解决办法]
仅供参考
float.h
……
#define DBL_DIG         15                      /* # of decimal digits of precision */
#define DBL_EPSILON     2.2204460492503131e-016 /* smallest such that 1.0+DBL_EPSILON != 1.0 */
#define DBL_MANT_DIG    53                      /* # of bits in mantissa */
#define DBL_MAX         1.7976931348623158e+308 /* max value */
#define DBL_MAX_10_EXP  308                     /* max decimal exponent */
#define DBL_MAX_EXP     1024                    /* max binary exponent */
#define DBL_MIN         2.2250738585072014e-308 /* min positive value */
#define DBL_MIN_10_EXP  (-307)                  /* min decimal exponent */


#define DBL_MIN_EXP     (-1021)                 /* min binary exponent */
#define _DBL_RADIX      2                       /* exponent radix */
#define _DBL_ROUNDS     1                       /* addition rounding: near */
……


[解决办法]
明白楼主的意思了。MSDN中有两unique

[解决办法]
来接点分~unique精度太高,怎么处理
[解决办法]
unique精度太高,怎么处理
[解决办法]
引用:
引用://寫錯了
int double_equal(double a, double b)
{
return fabs(a-b) < 2 * DBL_EPSILON;
}
DBL_EPSILON太小,唉。fabs报错,唉。


自己随便写一个比较大小的函数不就行了嘛。大致方法如下:
1. 将double转换成int,先比较整数部分的大小
2. 如果整数部分相等,那么就比较小数部分的大小,比如,如果比较精度是0.00001,那么就将小数部分乘以100000,再比较整数部分的大小就行。
[解决办法]
除了接分,更重要的是学习了~~~~
[解决办法]
好有,玄机。 

热点排行