我今天痛苦地了解到Nan和Inf有严重的问题.您是否知道例如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) 在 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 / 中)在官方文档中,没有给出示例。我真的希望所有标准位置都有一些简洁的常量?
是否有任何代码可以在OpenGL中计算和绘制n面棱镜?它应该像
void DrawPrism(long sides) {
glNormal3f( ...);
glTexCoord2f(..);
glVertex3f(...);
[...]
}
DrawPrism(5)
Run Code Online (Sandbox Code Playgroud)

基本上我只需要x - y - 基座边缘的位置.其余的计算由GL完成.
这可能是一个基本问题,但我找不到答案.如果你想在Android中只捕获FileNotFound,那么你就写了
} catch (FileNotFoundException e) {
Run Code Online (Sandbox Code Playgroud)
但是如果你想要准确地捕获ENOSPC(设备上没有空间)错误,你会怎么写?我不能使用"catch(Exception e)"因为我想明确处理这一个错误.