相关疑难解决方法(0)

如何在ANSI C中生成NaN,-Infinity和+ Infinity?

我使用ANSI C89(不是C++),我想生成NaN,-Infinity和+ Infinity.

有没有标准方式(例如标准宏)?或者是否有任何平台和编译器独立的方式来生成这些数字?

float f = 0.0 / 0.0; // Is f ALWAYS in any platform is NaN?
Run Code Online (Sandbox Code Playgroud)

c nan infinity

45
推荐指数
2
解决办法
3万
查看次数

算术运算导致溢出.(加整数)

我无法理解这个错误:

在对方法SetVolume的调用中,Volume = 2055786000,size = 93552000.Volume是Integer属性,size也是Integer,如您所见.

该类是dbml实体类的部分类,但是此Volume属性不是数据库中的列,它仅作为"业务对象属性"存在于部分类中.

查看详情显示:

Data> Item:为了评估索引属性,必须对该属性进行限定,并且必须由用户显式提供参数.

替代文字

可能导致这种情况......?

c# vb.net overflowexception

25
推荐指数
2
解决办法
11万
查看次数

C++如何处理NAN?有标准方式还是编译器依赖?

在需要处理sin(x)/ x函数的程序中,我遇到了NAN问题,我简化了以下代码中的问题:

#include <iostream>
#include <cmath>

int main()
{
    std::cout.precision(15);

    //This line compiles and run in g++, but does not compile in Visual Studio 2013
    std::cout << 0.0/0.0 << std::endl;

    //This line compiles and run in both g++ and VS2013
    std::cout << std::sin(0.0)/0.0 << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在g ++中,输出为:-nan -nan,在VS2013中,输出为:-1.IND,因为第一行没有编译所以我把它注释掉了.

我的问题是:

  1. 这个'-1.IND'是什么意思?

  2. 似乎NAN处理依赖于编译器,这应该在C++中标准化吗?为什么?

  3. 我用这个hack来处理这个问题:

    double sinc(double x)
    {
        if(x == 0.0)
            return 1.0;
        return std::sin(x)/x;
    }
    
    Run Code Online (Sandbox Code Playgroud)

这是正确的方法吗?

编辑:另一个问题,4.为什么VS2013处理0.0/0.0和sin(0.0)/0.0不同?

c++ floating-point nan

18
推荐指数
2
解决办法
2391
查看次数

为什么这些的返回值加倍-1.#IND?

我有 :

double score = cvMatchContourTrees( CT1, CT2, CV_CONTOUR_TREES_MATCH_I1, 0.0 );
        cout<<score<<endl;
Run Code Online (Sandbox Code Playgroud)

返回的值为-1.#IND.除此之外,正值是正常的,如1.34543.

为什么会这样?我该如何解决?

c++ opencv visual-studio-2008 visual-c++

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

为什么0除以0会在VBA中抛出溢出错误?

为什么要0/0投入Overflow errorVBA,而在.Net语言中它只是一个Division by 0错误?


例如,C#它是一个System.DivideByZeroException

static void Main()
{
    int k = 0;
    int p = 0;
    Console.WriteLine(k/p);
}
Run Code Online (Sandbox Code Playgroud)

Div/0错误存在于VBA.但是 0/0给出了溢出异常,而其他除以0的Div/0异常给出了异常:

Public Sub TestMe()

    'Integer
    PrintAndCheck (11)      '- Division by zero error

    'Double
    PrintAndCheck (0.9)     '- Division by zero error

    'Long
    PrintAndCheck (50000)   '- Division by zero error

    'String
    PrintAndCheck ("1.1")   '- Division by zero error

    '----------------------------------------------------
    '----------------BUT---------------------------------
    '----------------------------------------------------

    'Integer
    PrintAndCheck (0) …
Run Code Online (Sandbox Code Playgroud)

excel vba runtime-error excel-vba

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

是否可以使用Double.Parse方法解析"-1.#IND"等

尝试使用System.Double.Parse(string)字符串的方法,例如"-1.#IND"和表示特殊值的"INF"会导致a FormatException.

是否有任何内置的.NET框架支持来解析这些?

.net c#

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

什么是“-1.#IND”?

我有一些代码可以让我绘制新月形状,并提取了要绘制的值。然而,有些数字已经到位了-1.#IND。首先,如果有人可以解释这意味着什么,因为谷歌返回了 0 个链接。其次是否有办法阻止它发生。

我的代码有一个简短的类比。除此之外我还有很多代码,但这只是计算角度。

for(int j=0; j<=n; j++)//calculation for angles and output displayed to user
{
    Xnew2 = -j*(Y+R1)/n; //calculate x coordinate
    Ynew2 = Y*(pow(1-(pow((Xnew2/X),2)),0.5));
    if(abs(Ynew2) <= R1)
        cout<<"\n("<<Xnew2<<", "<<Ynew2<<")"<<endl;
}
Run Code Online (Sandbox Code Playgroud)

更多信息

我现在遇到这个代码的问题。

for(int i=0; i<=n; i++) //calculation for angles and output displayed to user
{                                          
    Xnew = -i*(Y+R1)/n; //calculate x coordinate
    Ynew = pow((((Y+R1)*(Y+R1)) - (Xnew*Xnew)), 0.5); //calculate y coordinate
Run Code Online (Sandbox Code Playgroud)

for(int j=0; j<=n; j++)//calculation for angles and output displayed to user
{
    Xnew2 = -j*(Y+R1)/((n)+((0.00001)*(n==0))); //calculate …
Run Code Online (Sandbox Code Playgroud)

c++ floating-point

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

IEEE浮点异常 - 为什么?

我正在制作一个简单的函数来重现Secant方法,我认为我有一些精确的问题.

首先,这是函数(以及调用它的main方法,以及与它一起使用的测试函数):

double secant_method(double(*f)(double), double a, double b){
    double c;
    for (int i = 0; i < 10; i++){
        c = a - f(a) * (a - b) / (f(a) - f(b));
        b = a; a = c;
    }
    return c;
}

typedef double (*func)(double);

//test function - x^3 + 4x - 10
double test(double x){
    return (x*x*x) + (4*x) - 10;
}

int main(){
    func f = &test;
    double ans;

    ans = secant_method(f, 0, 2);

    printf("\nRoot found:\t%.*g\n", …
Run Code Online (Sandbox Code Playgroud)

c math floating-point precision ieee-754

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