小编Vol*_*maz的帖子

cmake-设置-xcode属性-隐式链接Objective-C运行时支持

我想在cmake源文件中将隐式链接Objective-C运行时支持设置为NO。

我在set_target_properties中尝试过

XCODE_ATTRIBUTE_IMPLICITLY_LINK_OBJECTIVE-C_RUNTIME_SUPPORT NO
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

更改属性的规则是什么?还是应该从cmake预定义属性?如果在XCODE_ATTRIBUTE列表中?

xcode attributes set cmake

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

创建自定义 fltk 对话框/模式窗口

我想用 fltk 创建一个自定义对话框窗口。我将放置小部件。后台进程应等待对话框完成。我找不到任何这方面的例子。我正在寻找 fl_input 函数。我找到了 makeform() 函数,但它没有多大帮助。

fltk

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

c ++ float减法舍入误差

我有一个介于0和1之间的浮点值.我需要将其转换为-120到80.为此,首先我在120减去后乘以200.当减去时,我有舍入错误.让我们看看我的榜样.

    float val = 0.6050f;
    val *= 200.f;
Run Code Online (Sandbox Code Playgroud)

现在val是我预期的121.0.

    val -= 120.0f;    
Run Code Online (Sandbox Code Playgroud)

现在val是0.99999992

我想也许我可以通过乘法和除法来避免这个问题.

    float val = 0.6050f;
    val *= 200.f;
    val *= 100.f;
    val -= 12000.0f;    
    val /= 100.f;
Run Code Online (Sandbox Code Playgroud)

但它没有帮助.我手上还有0.99.

有解决方案吗?

编辑:经过详细的日志记录,我知道这部分代码没有问题.在我的日志显示"0.605"之前,我有详细的日志后,我看到"0.60499995946884155273437500000000000000000000000000"问题出在不同的地方.

编辑2:我想我发现了内疚.初始值为0.5750.

std::string floatToStr(double d)
{
    std::stringstream ss;
    ss << std::fixed << std::setprecision(15) << d;
    return ss.str();
}

int main()
{    
    float val88 = 0.57500000000f;
    std::cout << floatToStr(val88) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

结果是0.574999988079071

实际上我每次都需要从这个值中加上和减去0.0025.通常我预计0.575,0.57575,0.5800,0.52525 ....

编辑3:其实我用双倍尝试了所有这些.这是我的榜样.

std::string doubleToStr(double d)
{
    std::stringstream ss;
    ss << std::fixed << std::setprecision(15) << d; …
Run Code Online (Sandbox Code Playgroud)

c++ floating-point

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

与自身的双重比较

我有一个我正在分析的代码片,但我不明白这一行:

double level = 0;

...

if (!(level == level) && !(level < level) && !(level > level))
    exit(0);
Run Code Online (Sandbox Code Playgroud)

我认为这是关于双重比较的主题.知道它是什么?

c++

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

标签 统计

c++ ×2

attributes ×1

cmake ×1

floating-point ×1

fltk ×1

set ×1

xcode ×1