小编Ken*_*obi的帖子

在Windows C++中捕获Nan和Inf

我今天痛苦地了解到NanInf有严重的问题.您是否知道例如sqrtf(NaN)比sqrtf(10.123132)15倍以上且sqrtf(-1)慢30倍(!!) - 这是一个非常缓慢的浮点计算!?你计算垃圾,需要荒谬的时间,甚至没有意识到.

好的,在Linux下你可以通过在发生异常时抛出异常来捕获Nan和Inf错误:

#include <fenv.h> 
feenableexcept(FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW);
Run Code Online (Sandbox Code Playgroud)

你怎么能在Windows下实现这一目标?

编辑:基准代码:

float a,b;
a = 1.0 / 0;   //inf
a = -10;         //also nice
long c=0;
long time = SDL_GetTicks();

for (long i=1;i<=1000000;i++) {
   b=sqrt(a); 
}

ostringstream Help; Help << SDL_GetTicks()-time;

//RESULT SHEET
//sqrt(1): 21ms
//sqrt(10): 21ms
//sqrt(10.123): 20ms
//sqrt(-10);   390ms
//sqrt(+-NaN): 174ms
//sqrt(inf):  174
Run Code Online (Sandbox Code Playgroud)

c++ math

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

Android 11 ACTION_OPEN_DOCUMENT_TREE:将初始 URI 设置为文档文件夹

在 Android 11 中使用范围存储模型,我想让用户能够选择文件夹,从文档文件夹开始:

val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE)
intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI,    ???     )
startActivityForResult(intent, OPEN_DIRECTORY_REQUEST_CODE,null)
Run Code Online (Sandbox Code Playgroud)

问题是,如何生成手机文档文件夹的正确 URI?(它位于 root / 中)在官方文档中,没有给出示例。我真的希望所有标准位置都有一些简洁的常量?

android scoped-storage android-11

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

OpenGL中的n面棱镜代码

是否有任何代码可以在OpenGL中计算和绘制n面棱镜?它应该像

void DrawPrism(long sides) {

 glNormal3f( ...);
 glTexCoord2f(..);
 glVertex3f(...);
 [...]

}


DrawPrism(5)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

基本上我只需要x - y - 基座边缘的位置.其余的计算由GL完成.

c++ opengl math

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

在Android上只捕获ENOSPC

这可能是一个基本问题,但我找不到答案.如果你想在Android中只捕获FileNotFound,那么你就写了

        } catch (FileNotFoundException e)  {
Run Code Online (Sandbox Code Playgroud)

但是如果你想要准确地捕获ENOSPC(设备上没有空间)错误,你会怎么写?我不能使用"catch(Exception e)"因为我想明确处理这一个错误.

error-handling android

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