无法理解浮点数和对象实例化之间比较的原因

Cannot understand reason for comparison between float and object instantiation

本文关键字:比较 之间 实例化 对象 浮点数      更新时间:2023-10-16

我无法从Tesseract的控件中理解以下代码.cpp:

(stats_.doc_outline_errs / static_cast<float>(page_res->char_count) <=
     quality_outline_pc)

stats_.doc_outline_errsshortpage_res->char_countintquality_outline_pc是:

double_VAR_H(quality_outline_pc, 1.0,
               "good_quality_doc lte outline error limit");

double_VAR_H是:

#define double_VAR_H(name,val,comment)
  tesseract::DoubleParam     name

似乎我们正在将除以转换为floatintshort与变量声明进行比较,即 tesseract::DoubleParam quality_outline_pc

是一些C++特定的功能吗?

正在研究这个问题的原因是我从瓦尔格林德的这一行收到一个错误:

==29454== Conditional jump or move depends on uninitialised value(s)
==29454==    at 0x5AB9E76: tesseract::Tesseract::rejection_passes(PAGE_RES*, ETEXT_DESC*, TBOX const*, char const*) (control.cpp:665)

似乎我们正在将一个短除以转换为浮点数的 int 与变量声明进行比较,即 tesseract::DoubleParam quality_outline_pc

我不知道你说的"与变量声明比较"是什么意思。您正在将计算值与变量的值进行比较。DoubleParam类型可转换为double,使用其转换运算符operator double()。除法的结果将从 float 转换为 double 以匹配,并将这两个值进行比较。

是一些C++特定的功能吗?

我也不知道你这是什么意思。所有这些操作(类型转换、除法和比较)都是C++语言的一部分。

正在调查的原因是我从瓦尔格林德那里得到了一个错误

这意味着其中一个变量尚未初始化。