小编Mic*_*hal的帖子

为什么trunc(1)输出为0?

有人可以解释一下为什么在c ++中会发生这样的事情:

double tmp;
...                    // I do some operations with tmp 
                       // after which it has to be equal to one
cout << tmp;           // prints 1
cout << trunc(tmp);    // prints 0
cout << trunc(tmp*10); // prints 9
Run Code Online (Sandbox Code Playgroud)

我使用这个来分隔小数部分右边的数字,例如,如果我有:5.010 ...我想要0.010 ..所以我使用:

double remainder = tmp - trunc(tmp);
Run Code Online (Sandbox Code Playgroud)

我发布了整个代码....地板的建议没有用

short getPrecision(double num, short maxPrecision) {

  // Retrieve only part right of decimal point
  double tmp  = fabs(num - trunc(num));
  double remainder = tmp;

  // Count number of decimal places …
Run Code Online (Sandbox Code Playgroud)

c++ double decimal-point truncation

3
推荐指数
1
解决办法
169
查看次数

GDB奇怪的行为 - Linux

Yeasterday我对我的archlinux做了很大的更新(两个月后).我更新了用于开发的GCC,GDB和QtCreator.

gcc -v
gcc version 4.9.1 (GCC) 

gdb -v
GNU gdb (GDB) 7.8

qtcreator -version
Qt Creator 3.2.0 based on Qt 5.3.1
Run Code Online (Sandbox Code Playgroud)

今天我注意到了gdb的奇怪行为.如果我第一次启动调试器(重新启动计算机后),它可以工作.但是在调试器停止后,或者只是调试的应用程序停止了,它将不会再次运行...如果我再次开始调试,它会非常慢(但CPU显示正常负载),再次启动调试应用程序需要几分钟.调试完全冻结后,必须通过"killall gdb"杀死它.

只有我从GDB获得的输出是:

"warning: GDB: Failed to set controlling terminal: Inappropriate ioctl for device\n"
Could not load shared library symbols for linux-vdso.so.1.
Do you need "set solib-search-path" or "set sysroot"?
Run Code Online (Sandbox Code Playgroud)

我试着在这里搜索,但这篇文章无法加载linux-vdso.so.1的共享库符号.虽然调试告诉"无法加载共享库......"没什么特别的.

c++ linux debugging gdb

3
推荐指数
1
解决办法
1228
查看次数

QFileInfo是否与文件同步?

QFileInfo与源文件同步?或者它只是存储实例创建时的信息?

换句话说,如果我QFileInfo为我的文件创建实例.然后我改变了文件.然后,我QFileInfo为这个文件创建了第二个实例,它们会有不同的lastModified值吗?

c++ qt qt5

3
推荐指数
1
解决办法
120
查看次数

无法在Qt5应用程序中加载qca-ossl

我决定将我的应用程序从Qt4迁移到Qt5.使用Qt4我使用QCA和QCA-OSSL没有任何问题,但现在OSSL插件不想加载.

我已经在Qt5的git://anongit.kde.org/qca.git编译了QCA,所有插件都没有任何问题.我将QCA添加到我的应用程序(我正在使用CMAKE),它正确编译,但在运行期间它将不允许AES密码,因为没有加载OSSL插件.

我通过论坛搜索,将libqca-ossl.so放入crypto目录,并将此dir复制到我的/ usr/lib/qt/plugins也复制到我的项目和构建目录,但它没有帮助.

我会对任何帮助或建议感到满意.

c++ qt cryptography cmake qt5

2
推荐指数
1
解决办法
1643
查看次数

Java:N个最高元素的集合

我需要在大量数据中找到N个最大元素.

我有:

  • 外部数据库(Cassandra)中数亿项的集合
  • 迭代这些项并找到具有最大值的项的作业

    Item largest = null;
    
    // Page through big data
    List<Item> items = getNextPage(pageSize);
    while (items.size() > 0) {
    
      // Update largest item based on values from current page
      for (Item current : items) {
        if (largest == null || largest.getValue() < current.getValue()) {
          largest = current;
        }
      }
    
      // Move to next page
      items = getNextPage(pageSize);
    }
    
    Run Code Online (Sandbox Code Playgroud)

我需要:

  • 扩展此作业以保持具有最高值的N(简称100)元素

我的方法:

  • 我正在考虑像固定大小的优先级队列

    class PQsort implements Comparator<Item> {
    
      public int compare(Item one, Item two) {
        return two.getValue() - …
    Run Code Online (Sandbox Code Playgroud)

java priority-queue highest

2
推荐指数
1
解决办法
2382
查看次数

Java:将比较器重写为 Lambda - nullsafe

我怎样才能重写这个:

private Comparator<Domain> byRank;

...

byRank = new Comparator<Domain>() {
  @Override
  public int compare(Domain d1, Domain d2) {
    float tmp1 = d1.getDomainRank() == null ? 0 : d1.getDomainRank();
    float tmp2 = d2.getDomainRank() == null ? 0 : d2.getDomainRank();
    return Float.compare(tmp1, tmp2);
  }
};
Run Code Online (Sandbox Code Playgroud)

进入拉姆达?

根据使用 lambda 表达式排序之前检查空值,我尝试了以下操作:

byRank = Comparator.nullsFirst(Comparator.comparing(Domain::getDomainRank));
Run Code Online (Sandbox Code Playgroud)

但是,它失败了:

java.lang.NullPointerException: null
    at java.util.Comparator.lambda$comparing$77a9974f$1(Comparator.java:469)
    at java.util.Comparators$NullComparator.compare(Comparators.java:83)
    at java.util.PriorityQueue.siftUpUsingComparator(PriorityQueue.java:669)
    at java.util.PriorityQueue.siftUp(PriorityQueue.java:645)
    at java.util.PriorityQueue.offer(PriorityQueue.java:344)
    at java.util.PriorityQueue.add(PriorityQueue.java:321)
Run Code Online (Sandbox Code Playgroud)

编辑:即使我在比较之前检查比较对象是否为 null,lambda 也会失败:

Queue<Domain> topByRank = new PriorityQueue<>(TOP, byRank);

...

for (Domain …
Run Code Online (Sandbox Code Playgroud)

java comparison lambda

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

PHP:查找以":"开头的所有单词

你能帮助我使用PHP函数/正则表达式,在给定的文本中找到所有以字符":"开头的单词吗?

..换句话说,所有以":"开头并以""(空格)分隔的子串

php regex

-3
推荐指数
1
解决办法
3564
查看次数