是否存在isnormal,isnan等C函数的C++版本?我知道我可以使用C++中的C函数,但我总是很想知道是否有一些C++ - 只有替代品.
template <class T>
MyClass
{
public:
// ...
void MyMethod(T dbNumber)
{
// ...
T dbResult = do_some_operation_on_dbnumber(dbNumber);
if (IsInfinite(dbResult))
{
// ...
}
else if (IsIndefinite(dbResult))
{
// ...
}
else
{
// ...
}
// ...
}
static bool IsInfinite(T dbNumber)
{
// How do I implement this?
}
static bool IsIndefinite(T dbNumber)
{
// How do I implement this?
}
// ...
};
Run Code Online (Sandbox Code Playgroud)
我的代码中有一个数学运算,有时会在模板变量中返回无限且不确定的结果.我想抓住这些无限期的结果.我怎么做?
我不确定为什么下面的代码不起作用,我试图在数组中找到NaN的值,然后将NaN移动到数组中的第一个元素(元素0)并将现有元素0与任何地方交换NaN是.请问我能检查一下我的代码吗?也许你们/女孩可以看到我不能的东西?
提前致谢!
#define NaN (float)(1e308*10*0)
void movenan(float array[], int size)
{
int w;
float hold;
float move;
for(w = 0; w < SIZE - 1; w++)
{
if(array[w] == NaN)
{
hold = array[w];
array[w] = array[0];
array[0] = hold;
}
}
Run Code Online (Sandbox Code Playgroud)
}
我的目标是打印***平方根是否定的.但我想不出一种方法可以将默认nan文本更改为***
for(int i=x1;i<=x2;i++){
double y = sqrt(pow(i,2)+3*i-500);
if(y = ?){
outFile << "***";
}
Run Code Online (Sandbox Code Playgroud)
那么,我应该在if语句中写什么才能使它成为可能?或者也许有另一种方法可以检查y是否为nan然后打印*
我正在使用 C++ Builder XE 并想检查浮点值是否有效。根据帮助,在math.h中,有一个调用
bool IsNan(float value)
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试编译它时,它告诉我
Call to undefined function 'IsNan'
Run Code Online (Sandbox Code Playgroud)
查看 math.h,没有 isnan 这样的东西(我使用了不区分大小写的搜索)
我是在做傻事还是什么?
我有一个我正在分析的代码片,但我不明白这一行:
double level = 0;
...
if (!(level == level) && !(level < level) && !(level > level))
exit(0);
Run Code Online (Sandbox Code Playgroud)
我认为这是关于双重比较的主题.知道它是什么?
double test = 0.0;
.... some code
char qwe = ...
.. some code
test += qwe;
if (test >= 200 || test <= 300) {
test = 7.0;
}
// For some reason, test seems to equal 0?
Run Code Online (Sandbox Code Playgroud)
为什么(test >= 200 || test <= 300)== false?
这是非常奇怪的行为.
当我打印输出时,它是0?